我有一个包含 2 项元组、产品类型和头文件路径的列表:
TypeList = [("Bed bot", "src/robot/Version/Bed/rev.h"),
("Tow bot", "src/robot/Version/Tow/rev.h"),
("Con bot", "src/robot/Version/Con/rev.h")
]
当我执行我的完整程序时,我在终端中遇到常见的 FileNotFoundError: [Errno 2] No such file or directory
错误,因为我没有完整的文件路径。允许程序执行的完整文件路径为:
/home/tinker1@wc.com/src/robot/Version/Bed/rev.h
但是,当脚本运行时,我不希望用户必须输入以 /home/tinker1@wc.com
开头的路径,因为这是个人信息。有没有办法让脚本像我指定的完整路径一样运行?
答案 0 :(得分:1)
使用相对路径+在变量中保存要隐藏变量的内容
parent_dir = path.dirname(path.abspath(__file__))
with open(path.join(parent_dir, 'path', 'file.txt')) as fh:
...```
答案 1 :(得分:0)
试试这个 -
for product,path in TypeList:
path = '/home/tinker1@wc.com' + path
print(path)
您将打印完整路径
答案 2 :(得分:0)
使用 os
模块获取用户的主目录。
然后加入你的道路。
from os.path import expanduser, join
home = expanduser("~")
join(home, your_path)
答案 3 :(得分:0)
您可以尝试使用内置的 pathlib.Path
类。您只需要在路径前加上 ~
前缀,将它们包装到 pathlib.Path
对象中,然后调用 .expanduser()
方法。
from pathlib import Path
path = Path('~/src/robot/Version/Bed/rev.h').expanduser()
或者,您可以只构建一次主路径,然后只需使用 /
运算符将主路径与您的相对路径连接起来。
from pathlib import Path
home = Path('~').expanduser()
path = home / 'src/robot/Version/Bed/rev.h'
然后,您可以将路径对象转换回其字符串表示形式,也可以按原样使用它(例如,您可以直接使用它来使用 open(...)
打开文件)。