' FileNotFoundError:[Errno 2]没有这样的文件或目录'但不能使用精确或绝对的路径

时间:2018-03-19 19:16:13

标签: python file-not-found

我试图制作一个基本的文字冒险游戏,如下所示:

import time

print ("Hello and welcome to Prison Break")                           
print()                                                                            
print("Press S to start")                                                          
while True:
    choice = input("> ")

    if choice == 'S'or's' :                                                     
        print("Paddy Games presents...")
        time.sleep (2)
        print("Prison Break!")
        time.sleep(1)
        print("Before we begin, lets find out a bit about how you got 
        stuck in this prison in the first place!")
        time.sleep(2.5)
        print("When you are finished reading, type finished")
        file = open("Prison Break Backstory.txt","r")
        file_contents = file.read()
        print (file_contents)
        print()

问题是,当我去运行时,我得到了这个: ' FileNotFoundError:[Errno 2]没有这样的文件或目录' 我已经检查过我已经正确地写了文件名,肯定是

现在我知道网站上已经存在使用精确路径或绝对路径的解决方案。但是,我将在家里使用树莓派3和我的学校计算机进行此项工作。当我分发代码时,该文件将不在同一个地方。总而言之,我需要一个解决方案,使文件可以在所有计算机上定位,无论它在哪里,只要它在那里。

对不起,如果这是一个愚蠢的问题,我还在学习python并且还没有完善它。 提前感谢您的任何回复!

1 个答案:

答案 0 :(得分:0)

您想要一个相对路径的示例,还是要搜索计算机中的每个文件?对于后者,请查看this question,以便您可以执行以下操作:

for root, dirs, files in os.walk("C:/Users", topdown=False):
    for name in files:
        if name == "Prison Break Backstory.txt":
            file = open(os.path.join(root, name), "r")

但这种效率非常低效我真的建议你不要这样做。另外,如果这个文件的两个版本碰巧位于不同的目录中,那就会搞砸了。

相反,您应该做的是确保您始终知道此文本文件相对于您的python代码的位置。假设您的整个项目位于C:/Users/myname/Desktop/Project,您可以在C:/Users/myname/Desktop/Project/src(来源)中使用您的python代码,并在C:/Users/myname/Desktop/Project/txtfiles中使用您的文本文件。每当您将“Project”文件夹发送给某人时,python代码就可以像这样访问文本文件:

file = open("../txtfiles/Prison Break Backstory.txt","r")

另外,请确保始终关闭文件。改为使用

可能会更好
with open("../txtfiles/Prison Break Backstory.txt", "r") as f:
    file_contents = f.read()

因此,您不必关闭文件/风险,不要关闭它并获得i / o问题。