打开具有相对路径的文件

时间:2014-12-21 18:01:54

标签: python windows path

我试图在相对位置打开文件:

import time, os
day=time.strftime("%Y%m%d")
month=time.strftime("%m")
filename=time.strftime("%Y%m%d")


logs_dir = os.path.dirname('C:\Users\user1\Desktop\folder\main\Logs') 
rel_path = '\'+month+'\'+filename+'.txt'
abs_file_path = os.path.join(script_dir, rel_path)
file = open(abs_file_path, 'r')

我无法使用变量和反斜杠获得第二行。

2 个答案:

答案 0 :(得分:2)

\u在Python字符串文字中有特殊含义;它表示Unicode字符。 \f也是如此,它表示换页。

您需要使用raw-string

logs_dir = os.path.dirname(r'C:\Users\user1\Desktop\folder\main\Logs')

或forwardslashes:

logs_dir = os.path.dirname('C:/Users/user1/Desktop/folder/main/Logs')

为了防止Python解释它们。你也可以加倍反斜杠:

logs_dir = os.path.dirname('C:\\Users\\user1\\Desktop\\folder\\main\\Logs')

但这很乏味。


此外,您需要为每个'\'加倍反斜杠,因为字符串文字不能以单个\结尾。但这不是一个非常强大的解决方案。构建路径的更好方法是使用os.path.join

rel_path = os.path.join('\\', month, filename + '.txt')

然后,您可以将每个'\\'替换为os.sep,因为@helloV在他的回答中说。这将确保您的代码在Windows和* nix系统上创建外观合适的路径。

答案 1 :(得分:2)

使用os.sep代替'\',以避免转义问题。

尝试:

abs_file_path = os.path.join(script_dir, month, filename) + '.txt'