繁体   English   中英

如何在for循环中打开几个文本文件

[英]How to open several text files in a for loop

我在all_files列表中有几个文本文件,我想做一个循环来打开每个文件,获取其中的值,关闭文件,然后转到下一个。

仅使用f = open('file' ,'r+'')不能正常工作,所以我尝试使用完整路径,但也无法正常工作

import os
all_files = os.listdir("text_file")  #my list of files 

for file in all_files:
    f = open("/Users/stordd/Desktop/StageI2M/Leiden/text_file/file", 'r+')

我经常出现错误FileNotFoundError: [Errno 2] No such file or directory ,我不明白如何使用os.path.dirname(os.path.abspath(__ file __)

您的文件字符串错误。 它不应为"/Users/stordd/Desktop/StageI2M/Leiden/text_file/file" ,因为它会在每次迭代中在text_file目录中查找名为file 将该字符串更改为格式化的字符串,例如"/Users/stordd/Desktop/StageI2M/Leiden/text_file/{}".format(file) 因此,最终代码应如下所示:

import os
all_files = os.listdir("text_file")  #my list of files 

for file in all_files:
    f = open("/Users/stordd/Desktop/StageI2M/Leiden/text_file/{}".format(file), 'r+')

就我而言,我在file_handling目录中。 以下内容将帮助您找出答案。

我没有修改您的代码并使用它(只是尝试了类似的尝试来帮助您),因为我希望您通过查看我的解决方案来进行修复(如果您尚未修复)。

➜  file_handling git:(master) ✗ pwd
/Users/hygull/Projects/Python3/stkovrflw/2019/try/file_handling

在这里,我有3个文件,如下所示。

➜  file_handling git:(master) ✗ ls
A.txt     B.txt     reader.py
➜  file_handling git:(master) ✗ 
➜  file_handling git:(master) ✗ cat A.txt 
(A) I know Python
➜  file_handling git:(master) ✗ cat B.txt
(B) Data Science is really cool
➜  file_handling git:(master) ✗ 

现在,下面是从/Users/hygull/Projects/Python3/stkovrflw/2019/try/目录执行的Python代码( file_handling目录所在的目录)。

这些语句列出文件,并以1的顺序读取,并将读取的内容打印到控制台。

注意:在这里,您不需要显式地关闭文件,因为我们正在使用with语句来处理该文件(Pyhonic读取文件的方式)。

>>> import os
>>> 
>>> all_files = os.listdir('file_handling')
>>> 
>>> all_files
['reader.py', 'B.txt', 'A.txt']
>>> 
>>>
>>> for file in all_files:
...     dir_full_path = os.path.abspath('file_handling')    # e.g. /Users/rishi/file_handling
...     file_full_path = os.path.join(dir_full_path, file)  # e.g. /Users/rishi/file_handling/A.txt 
...     with open(file_full_path, 'r+') as f:
...         content = f.read()
...         print(content)
...         print('---' * 30, '\n')
... 

------------------------------------------------------------------------------------------ 

(B) Data Science is really cool

------------------------------------------------------------------------------------------ 

(A) I know Python

------------------------------------------------------------------------------------------ 

>>> 

您可以尝试以下方法:

with open('_name_of_file_', 'r+') as f, open('_name_of_file2_', 'r+') as g:
    something()

它适用于旧的Python版本,请保持联系。

更新

您可以尝试此操作(此处带有.txt文件):

import glob
path = /somewhere/you/decide

for file in glob.glob(os.path.join(path, '*.txt')):
     with open(filename, 'r') as f:
     text = f.read()
     print(text)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM