Python 奇怪';FileNotFoundError';在运行我的代码时

Python 奇怪';FileNotFoundError';在运行我的代码时,python,python-3.x,Python,Python 3.x,我在空闲时间写了一个小刽子手游戏。该文件夹包含三个文件:main.py、hangman.py和words.txt,其中hangman.py是一个模块,words.txt是游戏的单词列表。这些文件存储在~/projects/hangman中(我在Ubuntu上运行) 当我尝试时,它运行得非常完美: aditya@aditya-VirtualBox:~/projects$ cd hangman aditya@aditya-VirtualBox:~/projects/hangman$ python3

我在空闲时间写了一个小刽子手游戏。该文件夹包含三个文件:main.py、hangman.py和words.txt,其中hangman.py是一个模块,words.txt是游戏的单词列表。这些文件存储在~/projects/hangman中(我在Ubuntu上运行)

当我尝试时,它运行得非常完美:

aditya@aditya-VirtualBox:~/projects$ cd hangman
aditya@aditya-VirtualBox:~/projects/hangman$ python3 __main__.py
但是,如果我尝试这样做:

aditya@aditya-VirtualBox:~/projects$ python3 hangman
我最终会出现以下错误:

Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "hangman/__main__.py", line 37, in <module>
    while new_game():
  File "hangman/__main__.py", line 21, in new_game
    word = get_word(word_length)
  File "hangman/hangman.py", line 11, in get_word
    with open(filename, 'r') as w:
FileNotFoundError: [Errno 2] No such file or directory: 'words.txt'

为什么以两种不同的方式运行程序会产生两种不同的结果?

尝试提供open()方法的绝对路径。对于python3,可以这样尝试:

import os as o
path = o.path.abspath(o.path.dirname(__file__))
filename = o.path.join(path, "word.txt")
with open(filename, 'r') as w:
        print(w)

你的
hangman.py
words.txt
文件在同一个位置?为什么奇怪?它说它找不到文件,所以请给出正确的路径可能是因为words.txt在hangman目录中?我认为python解释器只在它运行的目录中查找文件,但我不太确定,请尝试使用filename='hangman.words.txt'或
'hangman/words.txt'
@kushangunaekera是的,它们存储在同一个位置。在这种情况下,当你试图从hangman目录中运行文件时,你会得到一个错误。没错,我没有意识到,ty!