问个批量打开文件的问题

templarsf
sf 2013-01-10 字数 302

目前只会

f = io.open(r'name.txt', 'rt',encoding='gbk',errors='ignore')

这种读取文件的办法,如果想一次性依次读取一个文件夹里面所有文件,有没有哪种好用的循环语句可以使用?

或者是我把这些文件都命名成A_1,A_2这样形式的东东,有没有什么办法可以批量读取。其实也就是读取文件名那个地方,如果引入循环的话怎么引才对。

Python Python的自由天空
7 个回复
Andor
珍惜 2013-01-10

f = itertools.chain(io.open(os.path.join(path, basename), ...) for basename in os.listdir(path))

...

或者

for basename in os.listdir(path):

f = io.open(os.path.join(path, basename), ...)

...

【 在 templarsf (sf) 的大作中提到: 】

: 目前只会

: f = io.open(r'name.txt', 'rt',encoding='gbk',errors='ignore')

: 这种读取文件的办法,如果想一次性依次读取一个文件夹里面所有文件,有没有哪种好用的循环语句可以使用?

: 或者是我把这些文件都命名成A_1,A_2这样形式的东东,有没有什么办法可以批量读取。其实也就是读取文件名那个地方,如果引入循环的话怎么引才对。

JulyClyde
我的月份又来了 2013-01-10

itertools库看着很神神叨叨啊

经常在各种地方被提起

【 在 Andor (珍惜) 的大作中提到: 】

: f = itertools.chain(io.open(os.path.join(path, basename), ...) for basename in os.listdir(path))

: ...

: 或者

: ...................

templarsf
sf 2013-01-10

谢谢啦~~

这两个函数在使用前用不用声明一下什么的?还是直接能用了?

【 在 Andor (珍惜) 的大作中提到: 】

: f = itertools.chain(io.open(os.path.join(path, basename), ...) for basename in os.listdir(path))

: ...

: 或者

: ...................

Rocket
向Raymond Hettinger学习 2013-01-10

itertools 是 Raymond Hettinger 很中意的作品,还是有两下子的。

【 在 JulyClyde (我的月份过去了) 的大作中提到: 】

: 标  题: Re: 问个批量打开文件的问题

: 发信站: 水木社区 (Thu Jan 10 15:28:51 2013), 转信

: itertools库看着很神神叨叨啊

: 经常在各种地方被提起

: 【 在 Andor (珍惜) 的大作中提到: 】

: : f = itertools.chain(io.open(os.path.join(path, basename), ...) for basename in os.listdir(path))

: : ...

: : 或者

: : ...................

: --

: 自由即奴役

: 战争即和平

: 无知即力量

: 谁掌握过去谁就掌握现在

: 谁掌握现在谁就掌握未来

hgoldfish
老鱼 2013-01-10

除了chain,基本没用过。

【 在 JulyClyde (我的月份过去了) 的大作中提到: 】

: itertools库看着很神神叨叨啊

: 经常在各种地方被提起

wincss
wincss 2013-01-10

import os

import itertools

【 在 templarsf (sf) 的大作中提到: 】

: 谢谢啦~~

: 这两个函数在使用前用不用声明一下什么的?还是直接能用了?

hgoldfish
老鱼 2013-01-10

import fileinput, io

def opengb(filename, mode):

return io.open(filename, mode, encoding='gbk', errors='ignore')

for line in fileinput.input(['1.txt', '2.txt', '3.txt'], openhook = opengbk):

print line

【 在 templarsf (sf) 的大作中提到: 】

: 目前只会

: f = io.open(r'name.txt', 'rt',encoding='gbk',errors='ignore')

: 这种读取文件的办法,如果想一次性依次读取一个文件夹里面所有文件,有没有哪种好用的循环语句可以使用?

: ...................