如何打开文件夹中的每个文件

新手上路,请多包涵

我有一个 python 脚本 parse.py,它在脚本中打开一个文件,比如 file1,然后做一些事情可能会打印出字符总数。

 filename = 'file1'
f = open(filename, 'r')
content = f.read()
print filename, len(content)

现在,我正在使用 stdout 将结果定向到我的输出文件 - 输出

python parse.py >> output

但是,我不想手动逐个文件执行此文件,有没有办法自动处理每个文件?喜欢

ls | awk '{print}' | python parse.py >> output

那么问题是如何从标准中读取文件名?或者已经有一些内置函数可以轻松完成 ls 和那些工作?

谢谢!

原文由 B.Mr.W. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 626
2 个回答

操作系统

您可以使用 os.listdir 列出当前目录中的所有文件:

 import os
for filename in os.listdir(os.getcwd()):
   with open(os.path.join(os.getcwd(), filename), 'r') as f: # open in readonly mode
      # do your stuff

全球

或者您可以仅列出一些文件,具体取决于使用 glob 模块的文件模式:

 import os, glob
for filename in glob.glob('*.txt'):
   with open(os.path.join(os.getcwd(), filename), 'r') as f: # open in readonly mode
      # do your stuff

它不必是当前目录,您可以在任何您想要的路径中列出它们:

 import os, glob
path = '/some/path/to/file'
for filename in glob.glob(os.path.join(path, '*.txt')):
   with open(os.path.join(os.getcwd(), filename), 'r') as f: # open in readonly mode
      # do your stuff

管道

或者您甚至可以使用指定的管道 fileinput

 import fileinput
for line in fileinput.input():
    # do your stuff

然后您可以将它与管道一起使用:

 ls -1 | python parse.py

原文由 Viktor Kerkez 发布,翻译遵循 CC BY-SA 4.0 许可协议

您应该尝试使用 os.walk

 import os

yourpath = 'path'

for root, dirs, files in os.walk(yourpath, topdown=False):
    for name in files:
        print(os.path.join(root, name))
        stuff
    for name in dirs:
        print(os.path.join(root, name))
        stuff

原文由 6160 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题