python使用文件的路径问题

python项目中有多层目录

├─run
│ main_run.py
│ __ init__.py

└─testpackage
│ mod.py
│ readme.txt
│ __ init __.py

mod内容为 def test():
print(“test”)

mark as

如果mark as testpackage为源码 root
在main_run里面
import的时候就可以
直接from mod import test
如果不标记为源码
那就需要
from testpacakage.mod import test

python -m

如果main_run里面 from testpackage.mod import test

E:\test>pipenv run python run/main_run.py
Traceback (most recent call last):
File “run/main_run.py”, line 2, in
from testpackage.mod import test
ModuleNotFoundError: No module named ‘testpackage’
找不到模块

这个时候用python -m
E:\test>pipenv run python -m run.main_run
就正常运行

还可以改造一下run文件

import sys
sys.path.append(“e:\test”)
放到from testoackage前面
再运行
E:\test>pipenv run python run/main_run.py
就没问题了

使用直接启动,还是以模块的启动,目的就是把import的那个模块的路径放到sys.path中
http://www.pythondoc.com/pythontutorial3/modules.html

模块中引用文件路径跟working directory的关系

引用文件路径要跟working directory是相对的关系

mainrun里面
path=“testpackage/readme.txt”
如果
working directory是e:\test
那么运行的时候
from os.path import isfile
print(isfile(path))
是True

如果working directory 是e:\test\run
那么是False
path="…/testpackage/readme.txt"
才是True
这个文件它就不会自己在sys.path里面寻找了。

改变当前运行的目录

main_run内容

path= “testpackage/readme.txt”
from os.path import isfile,dirname,abspath
from os import getcwd,chdir
print(isfile(path))
print(getcwd())
dir=dirname(getcwd())
chdir(dir)
print("***********")
print(getcwd())
print(isfile(path))

一开始workingdirectory目录是e:\test\run
结果
False
E:\test\run


E:\test
True

如果在
e:\test
结果
True
E:\test


E:
False
那么是True,False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值