python简述文件目录相对路径_python相对路径是相对于哪里

在学习scrapy时,保存数据到文件的时候,发现一直出现“找不到这样的文件或文件夹”的错误,最后发现是因为python的相对路径。

学习scrapy时,编写pipeline来将数据保存到文件当中,代码如下:

1

2

3

4

5

6class ():

def process_item(self, item, spider):

with open('Novel/'+str(item['title'][0])+'.txt','w') as f:

for p in item['content']:

f.write(p+'n')

return item

看着爬取时调试信息飞快闪过(爬取的东西有点多),却没有发现我准备好的Novel文件夹里面多出文件,连忙把爬虫停下来。发现出现了“找不到这样的文件或文件夹”的错误。

分析过程

查看日志信息,发现文件名是对的,但是为什么不行呢?

于是我在pipelines.py里面写了测试代码:

1

2with open('Novel/'+'文件名'+'.txt','w') as f:

print(1)

发现同样的错误。

我把前面的文件夹去掉,也就是:

1

2with open('文件名'+'.txt','w') as f:

print(1)

发现文件生成在了我的工作目录下!

这个时候我才注意到相对路径的问题。

当前目录是这样的(略去无关文件):

learn_scrapy文件名.txt

practicepracticepipeline.py

我本来以为这个相对路径会使得文件生成在pipelines.py的同级目录下,但是却生成在了我的VScode的工作文件夹?

我回忆起java课时老师写错相对路径导致无法显示图片的问题。那时也是需要相对当前项目的根目录来写相对路径的。我认为这是eclipse的特性。

会不会这个也是vscode的特性?

于是我搜索“python 相对路径”,找到了和我遇到类似问题的朋友:vscode中使用python相对路径问题?-知乎

我的工作目录是/Work

我在工作目录中创建了文件/Work/Program/main.py 并且运行main.py 生成了 file.txt文件

1

2

3> with open('file.txt','w') as f:

> f.write('HelloWorld')

>

我以为file.txt在/Work/Program路径下,和创建它的main.py在一个路径中

结果file.txt这个文件却在/Work路径下面(/Work/file.txt),而不是我所期望的/Python/Program路径下面

所以应该怎么配置,或者安装什么插件,能让py创建的文件在自己的相对路径下,而不是直接跑到了工作路径那里?

这个问题怎么解决啊,困扰了我好久,而我又比较喜欢vscode的界面不想放弃它。求解答!

看了回答之后我继续搜索,终于解决了困惑。

解决方案

参考链接:

Python里写这种相对路径, 是相对于终端的当前目录的.

解决办法是, 获取脚本所在目录, 构造绝对路径

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值