3
我知道這是一個簡單的初學者Python問題,但我在使用相對路徑打開文件時遇到問題。這種行爲似乎很奇怪,我(從非Python的背景的):Python中的相對路徑問題
import os, sys
titles_path = os.path.normpath("../downloads/movie_titles.txt")
print "Current working directory is {0}".format(os.getcwd())
print "Titles path is {0}, exists? {1}".format(movie_titles_path, os.path.exists(movie_titles_path))
titlesFile = open(movie_titles_path, 'r')
print titlesFile
這導致:
C:\Users\Matt\Downloads\blah>testscript.py
Current working directory is C:\Users\Matt\Downloads\blah
Titles path is ..\downloads\movie_titles.txt, exists? False
Traceback (most recent call last):
File "C:\Users\Matt\Downloads\blah\testscript.py", line 27, in <module>
titlesFile = open(titles_path, 'r')
IOError: [Errno 2] No such file or directory: '..\\downloads\\movie_titles.txt'
然而,dir命令顯示在相對路徑此文件存在:
C:\Users\Matt\Downloads\blah>dir /b ..\downloads\movie_titles.txt
movie_titles.txt
Python是如何解釋Windows上的相對路徑的?用相對路徑打開文件的正確方法是什麼?
此外,如果我換在os.path.abspath()
我的道路,然後我得到這樣的輸出:
Current working directory is C:\Users\Matt\Downloads\blah
Titles path is C:\Users\Matt\Downloads\downloads\movie_titles.txt, exists? False
Traceback (most recent call last):
File "C:\Users\Matt\Downloads\blah\testscript.py", line 27, in <module>
titlesFile = open(titles_path, 'r')
IOError: [Errno 2] No such file or directory: 'C:\\Users\\Matt\\Downloads\\downloads\\movie_titles.txt'
在這種情況下,似乎是open()
命令自動轉義字符\
。
**令人尷尬的最終更新:看起來像我揉了一個字符在Windows中正確的方式做到這一點在Windows上似乎是使用os.path.normpath()
,正如我原來的。
的行爲什麼?我們也需要輸出。 – Patrick 2008-11-25 21:59:16
我太早提交了意外,問題現在已修復。 – 2008-11-25 22:02:07