我在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