'FileNotFoundError: [Errno 2] No such file or directory' but can't use exact, or absolute, path
'FileNotFoundError: [Errno 2] No such file or directory' but can't use exact, or absolute, path
我正在尝试制作一个基本的文字冒险游戏,如下所示:
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] No such file or directory'
我已经检查过我写的文件名是否正确,它确实存在
现在我知道网站上已经有使用精确或绝对路径的解决方案。但是,我将在家里用我的 raspberry pi 3 和我学校的计算机来处理这个问题。当我分发代码时,文件不会在同一个地方。所以总而言之,我需要一个解决方案,使文件在所有计算机上都可以找到,无论它在哪里,只要它在那里。
抱歉,如果这是一个愚蠢的问题,我仍在学习 python,尚未完善。
预先感谢您的任何回复!
你想要一个相对路径的例子,还是搜索计算机中的每个文件?对于后者,请查看 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
,您可以将 python 代码放在 C:/Users/myname/Desktop/Project/src
(源)中,将文本文件放在 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 问题的风险。
我正在尝试制作一个基本的文字冒险游戏,如下所示:
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] No such file or directory' 我已经检查过我写的文件名是否正确,它确实存在
现在我知道网站上已经有使用精确或绝对路径的解决方案。但是,我将在家里用我的 raspberry pi 3 和我学校的计算机来处理这个问题。当我分发代码时,文件不会在同一个地方。所以总而言之,我需要一个解决方案,使文件在所有计算机上都可以找到,无论它在哪里,只要它在那里。
抱歉,如果这是一个愚蠢的问题,我仍在学习 python,尚未完善。 预先感谢您的任何回复!
你想要一个相对路径的例子,还是搜索计算机中的每个文件?对于后者,请查看 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
,您可以将 python 代码放在 C:/Users/myname/Desktop/Project/src
(源)中,将文本文件放在 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 问题的风险。