使用python的命令行参数
我有一段代码,可以让用户通过在命令行中传递一个参数来选择要更新的文件,然后它会做更多的事情,但我没有在这里包括:使用python的命令行参数,python,Python,我有一段代码,可以让用户通过在命令行中传递一个参数来选择要更新的文件,然后它会做更多的事情,但我没有在这里包括: import sys import os from sys import argv path = "/home/Desktop/python/test" files = os.walk( path ) filename = argv[1] if filename in files: inputFile = open(filename, 'r') else: pri
import sys
import os
from sys import argv
path = "/home/Desktop/python/test"
files = os.walk( path )
filename = argv[1]
if filename in files:
inputFile = open(filename, 'r')
else:
print "no match found"
sys.exit()
inputFile.close()
当我运行脚本时,它总是给我“找不到匹配项”,但我很确定文件在那里。我看不出我做错了什么os.walk()
返回一个生成器,它为每次迭代生成带有(根、目录、文件)
值的元组
您不能使用该生成器测试单个文件,不能在成员资格测试中使用简单的
您还需要重新恢复整个路径;如果没有一个未分类的文件名所在的目录,就不能打开它。只需在此处使用for
循环,一旦找到它,就可以中断。for
循环上的else
套件仅在未使用break
时执行(例如,未找到文件):
我添加了一个with
语句来处理文件对象的生存期;退出with
块后,文件将自动为您关闭。os.walk()
返回一个生成器,该生成器为每次迭代生成具有(根、目录、文件)
值的元组
您不能使用该生成器测试单个文件,不能在
成员资格测试中使用简单的
您还需要重新恢复整个路径;如果没有一个未分类的文件名所在的目录,就不能打开它。只需在此处使用for
循环,一旦找到它,就可以中断。for
循环上的else
套件仅在未使用break
时执行(例如,未找到文件):
我添加了一个with
语句来处理文件对象的生存期;退出with
块后,文件将自动关闭。或者,您可以使用以下代码段
import os.path
filename = argv[1]
path = "/home/Desktop/python/test/"
if os.path.isfile(path + filename):
inputFile = open(path + filename, "r")
else:
print "File Not Found"
或者,您可以使用以下代码段
import os.path
filename = argv[1]
path = "/home/Desktop/python/test/"
if os.path.isfile(path + filename):
inputFile = open(path + filename, "r")
else:
print "File Not Found"
使用os.listdir
而不是os.walk
来获取path
中的文件列表,而不是生成器。@霍尔特:但要考虑到您仍然需要使用os.path.join(path,filename)
以打开文件。使用os.listdir
而不是os.walk
以获取path
中的文件列表,而不是生成器。@Holt:但要考虑到您仍然需要使用os.path.join(path,filename)
才能打开文件。@Holt:谢谢;他有点匆忙,我知道我应该检查一下。@Holt:谢谢;有点匆忙,我知道我应该检查。这将检查当前目录中的filename
,而不是path
。您确实应该使用os.path.join()
;例如,它将负责在末尾添加缺少的路径分隔符等详细信息。这将检查当前目录中的filename
,而不是path
。您确实应该使用os.path.join()
;例如,它将处理诸如在末尾添加缺少的路径分隔符之类的细节。