簡體   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