从 PyCharm 中同一项目中的文件导入数据?
Import data from files in same project in PyCharm?
这是一个简单的问题,但我正在努力解决它。我在 PyCharm Community Edition 2021.1.1 中打开了一个项目。我有一个包含数据的 .npy 文件,它位于 src -> folder_name -> numpy_file.npy。然后,我在同一项目的另一个目录下有一个 Python 文件,位于 src -> folder_two -> python_code.py。在我的 Python 文件中,我尝试使用以下方式加载 numpy 文件数据:
np.load('folder_name/numpy_file.npy')
但是它告诉我没有这样的文件或目录。
我已将 'src' 标记为我的源根目录。我还缺少什么?谢谢。
这完全取决于您的 Python 程序执行的当前目录。如果它从 folder_two
开始,那么您应该通过“向上”一级打开文件:
'../folder_name/numpy_file.npy'
最简单的方法是使用 import os
和 print(os.getcwd())
检查您的当前路径并从那里导航 - 您可能位于与您想象的不同的文件夹中。据我所知,定义源文件夹并不意味着这是您当前的工作目录。您在 Working directory
的 运行 配置中定义此类内容。此外,使用 os
您可以根据需要更改目录,例如os.chdir("..")
上一级文件夹等
编辑
为了进一步详细说明问题 - 我尝试重现您的情况:
- 在名为
src
的文件夹中创建了一个新的 pyCharm 项目(纯 python,没有 venv,没有欢迎脚本)
- 我创建了子文件夹
folder_one
和 folder_two
- 在
folder_one
中,我创建了一个文本文件,其中包含一个名为 my_file.txt
的示例文本
- 在
folder_two
中,我创建了一个名为 sub_module.py
的 python 文件,与您的文件相同。
- 我将
src
定义为源根目录(我认为这不是必需的):在 PyCharm 项目树中 > 右键单击 src 文件夹 > 将目录标记为 > 源根目录
- 我创建了一个 运行 配置:
- 脚本路径:您的
sub_module.py
的路径
- 工作目录:
src
文件夹的路径
- 其余可以为空
最后,这是我的 sub_module.py 文件的内容:
print("Im in folder: " + os.getcwd())
# Here i define which file i want to access - taking for granted we are in the src folder already
other_file = "folder_one" + os.sep + "my_file.txt"
# Here i check if the file really exists
if os.path.isfile(other_file):
# Here i do some operations with the file and demonstrate os.path.abspath, which is not even needed
print("I can access file " + os.path.abspath(other_file))
with open(other_file) as f:
print(f.read())
这个returns我my_file.txt
的内容。我还上传了压缩的 PyCharm 项目 here (我不知道它是否完全合法)。希望这有助于联系。
这是一个简单的问题,但我正在努力解决它。我在 PyCharm Community Edition 2021.1.1 中打开了一个项目。我有一个包含数据的 .npy 文件,它位于 src -> folder_name -> numpy_file.npy。然后,我在同一项目的另一个目录下有一个 Python 文件,位于 src -> folder_two -> python_code.py。在我的 Python 文件中,我尝试使用以下方式加载 numpy 文件数据:
np.load('folder_name/numpy_file.npy')
但是它告诉我没有这样的文件或目录。
我已将 'src' 标记为我的源根目录。我还缺少什么?谢谢。
这完全取决于您的 Python 程序执行的当前目录。如果它从 folder_two
开始,那么您应该通过“向上”一级打开文件:
'../folder_name/numpy_file.npy'
最简单的方法是使用 import os
和 print(os.getcwd())
检查您的当前路径并从那里导航 - 您可能位于与您想象的不同的文件夹中。据我所知,定义源文件夹并不意味着这是您当前的工作目录。您在 Working directory
的 运行 配置中定义此类内容。此外,使用 os
您可以根据需要更改目录,例如os.chdir("..")
上一级文件夹等
编辑
为了进一步详细说明问题 - 我尝试重现您的情况:
- 在名为
src
的文件夹中创建了一个新的 pyCharm 项目(纯 python,没有 venv,没有欢迎脚本) - 我创建了子文件夹
folder_one
和folder_two
- 在
folder_one
中,我创建了一个文本文件,其中包含一个名为my_file.txt
的示例文本
- 在
folder_two
中,我创建了一个名为sub_module.py
的 python 文件,与您的文件相同。 - 我将
src
定义为源根目录(我认为这不是必需的):在 PyCharm 项目树中 > 右键单击 src 文件夹 > 将目录标记为 > 源根目录 - 我创建了一个 运行 配置:
- 脚本路径:您的
sub_module.py
的路径
- 工作目录:
src
文件夹的路径 - 其余可以为空
- 脚本路径:您的
最后,这是我的 sub_module.py 文件的内容:
print("Im in folder: " + os.getcwd())
# Here i define which file i want to access - taking for granted we are in the src folder already
other_file = "folder_one" + os.sep + "my_file.txt"
# Here i check if the file really exists
if os.path.isfile(other_file):
# Here i do some operations with the file and demonstrate os.path.abspath, which is not even needed
print("I can access file " + os.path.abspath(other_file))
with open(other_file) as f:
print(f.read())
这个returns我my_file.txt
的内容。我还上传了压缩的 PyCharm 项目 here (我不知道它是否完全合法)。希望这有助于联系。