鱼C论坛

 找回密码
 立即注册
查看: 5831|回复: 14

爬虫时,文件命名和保存时遇到的问题,求解救

[复制链接]
发表于 2016-1-21 22:34:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原打算在每次数据下载时都新建一个文件来存储数据,结果运行后报错说包装后save_file里的chengdu这个名字没被定义,啊,捉急啊,哪里错了呢
  1. import urllib.request
  2. import time,sys
  3. def save_file(chengdu,count):
  4.      file_name='chengdu'+str(count)+'.txt'
  5.      f=open(file_name,'x')
  6.      f.write(data)
  7.      f.close()
  8.      count=0
  9. while True:
  10.      s=time.ctime()
  11.      length=len(s)
  12.      sys.stdout.write(s)
  13.      sys.stdout.write('\b'*length)

  14.      url =" 等等等"#不写成这样就发不了啊,url对网站有攻击行为啥的
  15.      data = urllib.request.urlopen(url).read()
  16.      data = data.decode('UTF-8')
  17.      sys.stdout.write(data)
  18.      
  19.      save_file(chengdu,count)
  20.      count+=1
  21.      f.close()
复制代码

报错内容:
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\Python practise\成都空气污染数据下载.py", line 21, in <module>
    save_file(chengdu,count)
NameError: name 'chengdu' is not defined
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-22 08:48:58 | 显示全部楼层
函数里定义的chengdu是个变量,不能这么调用吧,file_name='chengdu'+str(count)+'.txt'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-22 08:53:02 | 显示全部楼层
函数传入的是实参,你这给的是形参
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-22 10:21:12 | 显示全部楼层
lingtingliushen 发表于 2016-1-22 08:48
函数里定义的chengdu是个变量,不能这么调用吧,file_name='chengdu'+str(count)+'.txt'

肿么改呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-22 10:21:46 | 显示全部楼层
hldh214 发表于 2016-1-22 08:53
函数传入的是实参,你这给的是形参

肿么改肿么改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-22 10:32:37 | 显示全部楼层

第三行
  1. def save_file(chengdu,count):
  2. 改为
  3. def save_file(count):
复制代码

另外在代码开始部分初始化一下count
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-22 10:37:10 | 显示全部楼层
lingtingliushen 发表于 2016-1-22 08:48
函数里定义的chengdu是个变量,不能这么调用吧,file_name='chengdu'+str(count)+'.txt'

我把前面的部分改成
  1. import urllib.request
  2. import time,sys
  3. area='chengdu'
  4. count=0
  5. def save_file(area,count):
  6.      file_name='area'+str(count)+'.txt'
  7.      f=open(file_name,'x')
  8.      f.write(data)
  9.      f.close()
复制代码

它又提示,f.close()的f没有定义,妈呀,第一次见关闭个文件还会这么报错的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-22 10:57:44 | 显示全部楼层
落叶的舞会 发表于 2016-1-22 10:37
我把前面的部分改成
它又提示,f.close()的f没有定义,妈呀,第一次见关闭个文件还会这么报错的{:10_306 ...

你看错了报错信息了吧?
这个函数的形参area没有用到, 你检查下你上下文代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-22 11:43:54 | 显示全部楼层
lingtingliushen 发表于 2016-1-22 08:48
函数里定义的chengdu是个变量,不能这么调用吧,file_name='chengdu'+str(count)+'.txt'

啊没事了,改好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-22 11:46:20 | 显示全部楼层
这是修改后的,我原来就准备用地名+时间来命名文件,所以一次性都改了
  1. import urllib.request
  2. import time, sys
  3. import datetime

  4. area = 'chengdu'

  5. def save_file(area, count):
  6.     file_name = 'area' + str(count) + '.txt'
  7.     area_file = open(file_name, 'x')
  8.     area_file.write(data)
  9.     area_file.close()


  10. while True:
  11.     s = time.ctime()
  12.     length = len(s)
  13.     sys.stdout.write(s)
  14.     sys.stdout.write('\b' * length)

  15.     url = "等等等等"
  16.     data = urllib.request.urlopen(url).read()
  17.     data = data.decode('UTF-8')
  18.     sys.stdout.write(data)
  19. {:10_256:}
  20.     save_file(area, datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
  21.     time.sleep(3600)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-22 11:51:21 | 显示全部楼层
hldh214 发表于 2016-1-22 10:57
你看错了报错信息了吧?
这个函数的形参area没有用到, 你检查下你上下文代码

恩恩,改好啦,把报错处的f改成area_file.close()就不报错了谢谢你呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-22 16:47:54 | 显示全部楼层
好吧,早晨没过来签到……不过在群里帮你解决了~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-22 17:49:18 | 显示全部楼层
向楼主学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-23 11:29:11 | 显示全部楼层
学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-23 22:55:31 | 显示全部楼层
果然是交流的好地方
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-19 09:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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