2015-05-04 68 views
2

我正在研究一個函數,它從一個文件中逐個讀取多個文件。我設置了在文件中獲取大量文件名的方法,但我不確定在循環序列中應該使用什麼。這裏是我現在在哪裏:如何逐個打開多個文件並使用Python打印內容

with open('userdata/addedfiles', 'r') as read_files: 
     number_of_files = sum(1 for _ in read_files) 

    print(number_of_files, "files added") 
    print("File contents: \n") 

    # get individual filenames in file and 
    # read them one by one 

    for x in range(number_of_files): 
     # hmm... 

有什麼建議在這裏使用?謝謝。

+2

'NUMBER_OF_FILES = SUM(1 _在read_files )'等於'number_of_files = len(read_files)'....對嗎? –

+1

@JoseRicardoBustosM。 ''_io.TextIOWrapper'沒有len()' –

+0

你正在看到相反的問題。 1)找到一個簡單的方法來遍歷所有的文件名和2)讀取它的內容並打印它。 http://stackoverflow.com/questions/3207219/how-to-list-all-files-of-a-directory-in-python – Joe

回答

4

你有正確的想法,但與當前的設置,您將通過輸入文件超過必要幾次的項目進行循環。讓我們試試這樣:

with open('userdata/addedfiles', 'r') as read_files: 
    file_lines = read_files.readlines() 
    # print the length of the lines from the input file 
    print(len(file_lines), "files added") 

    # do stuff per line (which in your case is a file name) 
    for file_name in file_lines: 
     print(file_name.strip()) 
+0

謝謝,這讓我朝着正確的方向前進。 – tolbiac

2

我並不確定要達到的目標,但下面的代碼將打開userdata/addedfiles/中的所有文件,並逐行顯示文件名和內容。

您可以使用glob

import glob 
for file in glob.glob("userdata/addedfiles/*"): 
    print file 
    myfile = open(file,"r") 
    lines = myfile.readlines() 
    for line in lines: 
     print line.strip(); 
1

爲什麼你需要獲得在主文件中的文件數量尚不清楚,但爲什麼不乾脆:

with open('userdata/addedfiles', 'r') as read_files: 
    for infile in read_files: 
     with open(infile) as infile2: 
      # Do something with contents