[英]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.