2024-05-15 09:51:45 发布
网友
程序txt.py打印将目录作为命令行参数并打印特定扩展名的所有文件
txt.py
def printAll(path): for txtFile in glob.glob(path): print txtFile printAll(sys.argv[1])
在命令行中输入python txt.py /home/Documents/*.txt
python txt.py /home/Documents/*.txt
它只打印第一个txt文件。 如果从命令行传递目录,如何打印该目录中的所有txt文件?你知道吗
txt
由于shell的工作方式,您实际上是在传递整个文件列表,但只使用第一个文件。这是因为shell将展开*字符,然后将所有*.txt文件传递给脚本。你知道吗
*
*.txt
如果您只是在脚本中这样做:
for i in sys.argv[1:]: print(i)
您将看到您的程序应该打印的列表。为了避免这种情况,您有几个选择:
"/home/Documents/*.txt"
只传递扩展部分python txt.py /home/Documents/.txt,并在脚本中:
python txt.py /home/Documents/.txt
def print_all(path): path = path[:path.rfind('/')+1]+'*'+path[path.rfind('/')+1:] for i in glob.glob(path): print(i)
传递两个参数、路径和扩展名python txt.py /home/Documents/ .txt,然后将它们连接在一起:
python txt.py /home/Documents/ .txt
print_all(sys.argv[1]+'*'+sys.argv[2])
在命令行中,*是一个shell通配符,shell将其展开并将文件列表传递给脚本,例如
python txt.py "/home/Documents/1.txt" "/home/Documents/2.txt" "/home/Documents/3.txt"
只看第一个参数,所以只打印一个文件。你知道吗
您需要在shell中转义*以便它作为带星号的单个参数传递给Python。在bash shell中,可能:
python txt.py "/home/Documents/\*.txt"
编辑:您也可以选择命令行上的目录路径,并在程序中添加*.txt部分,例如
def printAll(path): path = path + "/*.txt" for txtFile in glob.glob(path): print txtFile printAll(sys.argv[1]) call it with: $ python txt.py "/home/Documents"
编辑2:在路径中传递一个示例文件,脚本可以找到具有相同文件扩展名的文件,怎么样?它甚至不必存在。听起来很有趣:
import os, sys def printAll(path, fileext): query = os.path.join(path, '*.' + fileext) for someFile in glob.glob(query): print someFile printAll(sys.argv[1], sys.argv[2]) call it with $ python txt.py /home/Documents txt
你知道吗(操作系统路径连接是一个实用程序,可以添加/如果需要的话)
或者在路径中传递一个示例文件,这样脚本就可以找到具有相同文件扩展名的文件了?它甚至不必存在。听起来很有趣:
import os, sys def printAll(path): searchdir, filename = os.path.split(path) tmp, fileext = os.path.splitext(filename) path = os.path.join(searchdir, '*'.fileext) for someFile in glob.glob(path): print someFile printAll(sys.argv[1]) call it with: $ python txt.py "/home/Documents/example.txt"
由于shell的工作方式,您实际上是在传递整个文件列表,但只使用第一个文件。这是因为shell将展开
*
字符,然后将所有*.txt
文件传递给脚本。你知道吗如果您只是在脚本中这样做:
您将看到您的程序应该打印的列表。为了避免这种情况,您有几个选择:
"/home/Documents/*.txt"
只传递扩展部分
python txt.py /home/Documents/.txt
,并在脚本中:传递两个参数、路径和扩展名
python txt.py /home/Documents/ .txt
,然后将它们连接在一起:在命令行中,
*
是一个shell通配符,shell将其展开并将文件列表传递给脚本,例如只看第一个参数,所以只打印一个文件。你知道吗
您需要在shell中转义*以便它作为带星号的单个参数传递给Python。在bash shell中,可能:
编辑:您也可以选择命令行上的目录路径,并在程序中添加
*.txt
部分,例如编辑2:在路径中传递一个示例文件,脚本可以找到具有相同文件扩展名的文件,怎么样?它甚至不必存在。听起来很有趣:
你知道吗(操作系统路径连接是一个实用程序,可以添加/如果需要的话)
或者在路径中传递一个示例文件,这样脚本就可以找到具有相同文件扩展名的文件了?它甚至不必存在。听起来很有趣:
相关问题 更多 >
编程相关推荐