【问题标题】:how to input multiple files in python script using sys.argv list如何使用 sys.argv 列表在 python 脚本中输入多个文件
【发布时间】:2020-07-14 00:41:17
【问题描述】:

我想将多个文件一个一个地放入 python 脚本作为输入文件,并一个接一个地对所有这些文件执行我的脚本操作。我想使用 sys.argv list 执行此操作,但不知道该怎么做这妥妥的。这是我的一段代码:

import re
r=open('sys.argv[1]',"r")

我应该首先做什么来初始化这个列表,然后一个一个打开它们以供我的脚本阅读?任何帮助都是有义务的。谢谢

【问题讨论】:

  • @iqra.khan 如果任何答案适用,请接受答案并为解决方案投票。

标签: python linux bioinformatics argv sys


【解决方案1】:

如果需要从命令中一一使用,可以使用 sys.argv[1:]

import sys
    
def main():
    for filename in sys.argv[1:]:
        with open(filename, 'r') as file:
            file.readlines()
    
if __name__ == '__main__':
    main()

【讨论】:

  • 谢谢,但是这个 sys.argv[1:] 给出了一个空列表,同时在 0 索引 (sys.argv[0]) 处给出 script.py 名称。我希望它读取同一目录中存在的所有文件。
  • 另外,我不明白如何使用这个 if 语句?如何使用这个 if 语句或者它是为了什么目的?
  • @iqra khan,我认为您需要在命令中将文件名作为参数传递。像这样的东西 - python script.py file1.txt, file2.txt, file3.txt.... 你需要从同一个目录使用 @Manish 答案。我曾经运行 main 函数的 if 语句。你可以阅读更多here
  • 谢谢,我已经用从索引 1 开始的文件名初始化了 sys.argv,它对我有用。
【解决方案2】:

类似的东西

import os,re
list1 = os.listdir()
for filename is list1:
  r=open(filename,"r")

编辑另一种解决方案

import glob
list1 = glob.glob("*")
for filename in list1:
   r=open(filename,"r")
print(r)

【讨论】:

  • 我有 17000 多个文件要读取,但通过这种方法,list1 列表中只列出了 9999 个文件。 @Manish
  • @iqrakhan 您确定所有文件是否都存在于同一目录中。如果列表需要 17k 输入并且确实如此,我运行了一个示例测试。 list1 = [str(x) for x in range(1,17001,1)] print(len(list1)) # 17000 所以这意味着 listdir 方法不起作用或文件不存在.....你有什么调查了吗?
  • 列表的长度与我的文件数量完全相同,但是当我尝试打印整个列表时,某些文件名没有打印出来。
猜你喜欢
  • 2017-10-30
  • 1970-01-01
  • 2015-06-14
  • 2021-04-15
  • 2020-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多