我正在尝试使用setuptools创建一个包。软件包安装正确,我可以看到日志复制.txt文件。但是当脚本试图打开它时,它会给出“没有这样的文件或目录”错误。
文本文件名是“stopwords.txt”
Hierarichy: wcounter | --setup.py --MANIFEST.in --README.md --wcounter | --module1.py --module2.py --stopwords.txt
Setup.py
from setuptools import setup, find_packages
<br>
<br>
setup( name = "wcounter",<br>
version = "1.0",<br>
packages = find_packages(),<br>
package_data = {"": ["stopwords.txt"]},<br>
include_package_data = True, <br>
zip_safe = True, <br>
entry_points = {'console_scripts' : ['wcount = wcounter.wcounter:main'],},<br>
)
我正在尝试使用文件IO访问该文件。 恩。 f = open(“stopwords.txt”,“r)
答案 0 :(得分:0)
在python中,当使用相对路径打开文件 - open("stopwords.txt", "r")
时 - 路径将相对于当前工作目录,而不是文件从中打开的python文件。
例如,请考虑以下脚本:
C:\temp> python C:\path\to\myscript.py
如果myscript.py
尝试open('stopwords.txt')
,则会C:\temp\stopwords.txt
,而不是C:\path\to\stopwords.txt
。
您需要明确引用stopwords.txt
的完整路径。您可以使用魔术__file__
属性来执行此操作。
例如,如果您尝试在示例中从module1.py
打开文件,则可以
import os
fp = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'stopwords.txt')
open(fp, 'r')
os.path.abspath
确保它是完整路径(在某些情况下,__file__
将是相对路径。)
os.path.dirname
获取模块名称的目录部分 - C:\Python27\lib\site-packages\wcounter
。
os.path.join
将目录和文件名连接在一起,形成一个完整的绝对路径。