我有一个项目,其中有几个目录:项目,设置,资源。在这些目录中打开文件的最佳实践是什么。
现在我正在做
with open(f'./Projects/{project_name}/project.txt', 'r') as f:
...
我已经看到很多人推荐这样的东西:
projects_path = os.path.abspath(os.path.dirname(__file__))
project_path = os.path.join(projects_path, f'{project_name}/project.txt')
with open(project_path, 'r') as f:
...
使用第二种方法比第一种方法有什么好处?最佳做法是什么?
答案 0 :(得分:3)
第二个片段应该是
os.path.join(projects_path, project_name, ‘projects.txt’)
有什么好处?可移植性。您的代码可以更轻松地在不同的操作系统上运行,因为Windows路径与* nix路径完全不同,但是此代码段仍可同时在两个操作系统上运行。
这取决于您是否需要代码真正跨平台。
此外,绝对路径使您的代码无论安装在哪里或在哪里运行都可以正常工作。当前工作目录可能没有“ Projects”文件夹,因为它是作为Shell脚本执行的,位于/ usr / local / bin文件夹中。
通常,对任何相对路径进行硬编码都会产生易碎代码,因为现在您需要诸如“需要在(特定目录)中安装此”之类的指令。稳健代码始终比易碎代码更好。
答案 1 :(得分:0)
大多数人建议这样做的唯一原因是,如果您要访问的文件都具有相同的根文件夹(即projects_path),则不必每次都键入该文件。后者是最佳做法。
答案 2 :(得分:0)
with open('passy.txt','r') as b:
pass_check=b.readlines()
for i in range(len(pass_check)):
pname.append(i)
passlength=int(len(pname))
for i in range(passlength):
if passvalid == passlength[i]:
print("Password is correct")
break
else:
print("Password isn't correct")
使您从操作系统之间的差异中抽象出来。
使用os.path。*,您可以运行代码而无需担心操作系统。