鱼C论坛

 找回密码
 立即注册
查看: 2472|回复: 2

python3如何生成动态存取路径

[复制链接]
发表于 2017-5-12 14:51:36 | 显示全部楼层 |阅读模式
10鱼币
我写了一个python3爬虫爬取天气数据,主要针对20个城市,希望能保存在不同的文件目录下,格式为:     D:\python练习\城市名\属性名.txt
我的处理方法是
  1. def save_pm10(pm10,add):
  2.     a="r"D:\python练习\"
  3.     b="\"+"pm10""
  4.     a=a+add+b
  5.    
  6.     print(a)
  7.     '''f=open(r'D:\python练习\pm10','a',encoding='utf-8')'''
  8.     f=open(a,'a',encoding='utf-8')
  9.     ticks=time.asctime(time.localtime(time.time()))+' '
  10.     ticks=str(ticks)
  11.     f.write(ticks+pm10+'\n')
  12.     f.close
复制代码

参数pm10是int,add是字符串
报错见截图

我print了a字符串
可以看到是符合我要求的     r"D:\python练习\北京\pm10"
但是在f.open()得到参数后,可以看到     OSError: [Errno 22] Invalid argument: 'r"D:\\python练习\\北京\\pm10"'
双反斜杠又出来了,r的外侧又多了一层引号,导致报错。
因为a是字符串格式所以外面那一层引号是隐含的,只是print不显示,但是我要采用传参的方法,字符串变量外层的引号又去不掉。


重复一下我的需求:
f=open(a,'a',encoding='utf-8')
a是我要的目录,作为一个参数传进来。
请大家集思广益帮我解决,谢谢。

饿死了,先去吃个饭。

p报错.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-12 16:06:27 | 显示全部楼层
帮你改了2个地方,看备注,其他不要的我删除了
  1. def save_pm10(pm10,add):
  2.     a = "D:\\python练习\\%s\\%s.txt" % (add,str(pm10))  #使用字符串格式化
  3.     print(a)
  4.     '''f=open(r'D:\python练习\pm10','a',encoding='utf-8')'''
  5.     f=open(a,'a',encoding='utf-8')
  6.     ticks=time.asctime(time.localtime(time.time()))+' '
  7.     ticks=str(ticks)
  8.     f.write(ticks+str(pm10)+'\n')  #pm10是数字要转换成字符串才能相加
  9.     f.close
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-12 16:12:23 | 显示全部楼层
要是我自己写的的话,我会这样写这个函数
  1. def save_pm10(pm10,add):
  2.     a = r"D:\python练习\{}\{}.txt".format(add,str(pm10))
  3.     print(a)
  4.     with open(a,'a',encoding='utf-8') as f:
  5.       ticks=str(time.asctime(time.localtime(time.time())))+' '+str(pm10)
  6.       f.write(ticks+'\n')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 22:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表