我试图在相对位置打开文件:
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')
我无法使用变量和反斜杠获得第二行。
答案 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'