如何将变量放入路径中

How do I put a variable in a path

我正在尝试将路径存储在变量中。 见下文

target = r"C:\Users\User\CodeProjects\WebSafer"

但是,我需要它是动态的。没有硬编码到我的用户名,所以我通过以下方式获得登录用户名:

val = os.getlogin()

所以我需要把变量val放在路径中。但每次我尝试这样做时,我总是会收到 truncating/syntax 错误。请帮我!下面是代码片段:

print("No copy found...making a copy\n")

val = os.getlogin()

original = r"C:\*******\********\*******\***\****"
target = r"C:\Users\User\CodeProjects\WebSafer"
shutil.copy(original, target)

“*”只是出于隐私原因,实际上替换为我正在复制的正确路径位置。

到目前为止我尝试了什么:

target = r"C:\Users\{val}\CodeProjects\WebSafer".format(val = os.getlogin)
target = r"C:\Users\{}\CodeProjects\WebSafer".format(val)
target = rf"C:\Users\{val}\CodeProjects\WebSafer".format(val = os.getlogin)
target = rf"C:\Users\{}\CodeProjects\WebSafer".format(val)

"r" 表示字符串将被视为原始字符串,因此请尝试删除它并使用转义字符 target = "C:\Users\{val}\CodeProjects\WebSafer".format(val = os.getlogin)

不要将 f.format 混用,这对我有用:

import os

val = os.getlogin()
print(rf"C:\Users\{val}\CodeProjects\WebSafer")

我认为更好的方法是:

import os.path
from pathlib import Path

home = str(Path.home())
print(os.path.join(home, "CodeProjects\WebSafer"))

然后如果你在复制的时候遇到什么错误,你需要弄清楚你要复制的是什么,复制一个文件,还是一个文件夹,如果是文件夹,是放到dest文件夹里面,还是覆盖目标文件夹?
您可能想尝试不同的方法,例如 shutil.copyshutil.copytree 和不同的参数。

您可以同时使用 f-string(直接输入您的变量)和 r-string(输入没有转义字符的路径,如 \)。

val = os.getlogin() # Returns username
target = fr"C:\Users\{val}\CodeProjects\WebSafer"

如果您收到 No such file or directory 错误,则表示实际文件或文件夹不存在。检查实际路径以确保每个部分(您的用户名、CodeProjects、Websafer)都存在于您的计算机上。

如果您不知道您的用户是否会在他们的系统上拥有该文件夹,您可以使用 try-except 块来提醒用户或恢复到某个默认文件夹。