2015-05-04 33 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