我正在尝试从目录中打开每个文件并打印内容,所以我有一个代码:
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中的最后一行。这是整个代码,它仍然只打印最后一个文件。
答案 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 。