这个问题与Python连接文本文件有关
我有一个清单file_names,比如['file1.txt', 'file2.txt', ...].
我想将所有文件打开成一个文件对象,我可以逐行阅读,但我不想在这个过程中创建一个新文件.那可能吗?
with open(file_names, 'r') as file_obj:
line = file_obj.readline()
while line:
...
Run Code Online (Sandbox Code Playgroud)
Ano*_*nta 22
使用来自fileinput模块的输入.它从多个文件中读取,但看起来字符串来自单个文件.(懒惰线迭代).
import fileinput
files= ['F:/files/a.txt','F:/files/c.txt','F:/files/c.txt']
allfiles = fileinput.input(files)
for line in allfiles: # this will iterate over lines in all the files
print(line)
# or read lines like this: allfiles.readline()
Run Code Online (Sandbox Code Playgroud)
如果您需要在一个地方使用所有文本 StringIO
import io
files= ['F:/files/a.txt','F:/files/c.txt','F:/files/c.txt']
lines = io.StringIO() #file like object to store all lines
for file_dir in files:
with open(file_dir, 'r') as file:
lines.write(file.read())
lines.write('\n')
lines.seek(0) # now you can treat this like a file like object
print(lines.read())
Run Code Online (Sandbox Code Playgroud)
沿着这条线尝试一些东西:
def read_files(*filenames):
for filename in filenames:
with open(filename,'r') as file_obj:
for line in file_obj:
yield line
Run Code Online (Sandbox Code Playgroud)
你可以用
for line in read_files("f1.txt", "f2.txt", "f3.txt"):
#... do whatever with the line
Run Code Online (Sandbox Code Playgroud)
或者
filenames = ["f1.txt", "f2.txt", "f3.txt"]
for line in read_files(*filenames):
#... do whatever with the line
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5618 次 |
| 最近记录: |