我在Windows XP上的Python 2.7中有一个讨厌的问题。我有一些代码从argparse库的命令行中收集文件名。然后我尝试打开这个文件。通常情况下,这可以正常工作,如果您传入完整路径名称,它也会成功打开。但是,如果路径使用的驱动器号不是从您开始的位置,则python会失败,并显示IO错误,指出该文件或目录不存在。在python中的独立驱动器上打开文件
例如:
C:\>schema_split.py "C:\path\to\file"
works!
C:\>schema_split.py "I:\path\to\file"
fails!
相关代码段:
parser = argparse.ArgumentParser(description='Process the Accounting file.', version='%(prog)s 1.1')
parser.add_argument('infile', nargs="+", type=str, help='list of input files')
# get the current arguments and put them into a variable
args = parser.parse_args()
for f in args.infile:
with open(f, "rb") as mycsv:
我不知道为什么会蟒蛇有备用驱动器号的问题。我唯一能想到的就是我们在映射到本地驱动器的共享驱动器上运行它。但是对于所有意图和目的,程序不应该“看到”它在远程驱动器上运行的事实。
想法?
有关命令行和argparse的详细信息对于您的问题是多余的。 – 2011-05-18 14:11:44
“f”总是一个有效的文件名? – 2011-05-18 14:14:13
@Ignacio Vazquez-Abrams对测试用例失败了,是的。我想我可以通过将当前工作目录切换到I:来“修复”它,但这并不能解释为什么会发生这种情况。 – 2011-05-18 14:17:24