使用python读取目录中的多个文件

时间:2016-08-12 18:59:04

标签: python

我正在尝试从目录中打开每个文件并打印内容,所以我有一个代码:

import os, sys

def printFiles(dir):
    os.chdir(dir)
    for f in os.listdir(dir):
        myFile = open(f,'r')
        lines = myFile.read()
        print lines
        myFile.close()

printFiles(sys.argv[1])

程序运行,但问题是它只打印文件的一个内容,可能是它读取的最后一个文件。这是否与open()函数有关?

编辑:添加了sys.argv中的最后一行。这是整个代码,它仍然只打印最后一个文件。

2 个答案:

答案 0 :(得分:1)

目录和文件路径存在问题。

选项1 - chdir:

'/{page_id}/posts?fields=message,attachments,created_time&limit=100

选项2 - 计算完整路径:

def printFiles(dir):
    os.chdir(dir)
    for f in os.listdir('.'):
        myFile = open(f,'r')
        # ...

但是你把两种选择结合起来 - 这是错误的。

这就是为什么我更喜欢pathlib.Path - 它更简单:

def printFiles(dir):
    # no chdir here
    for f in os.listdir(dir):
        myFile = open(os.path.join(dir, f), 'r')
        # ...

答案 1 :(得分:0)

代码本身当然应该打印每个文件的内容。 但是,如果您提供本地路径而不是全局路径,则它将无法工作。

例如,假设您有以下文件夹结构:

./a
./a/x.txt
./a/y.txt
./a/a
./a/a/x.txt 

如果你现在运行

printFiles('a')

您只能获取 x.txt 的内容,因为 os.listdir 将从 a 中执行,并将列出内部 a / a 文件夹的内容,只有 x.txt