利用python 读写csv文件


Posted in Python onSeptember 10, 2020

1、读文件

import csv
 
csv_reader = csv.reader(open("data.file", encoding="utf-8"))
for row in csv_reader:
  print(row)

csv_reader把每一行数据转化成了一个list,list中每个元素是一个字符串。

2、写文件

读文件时,我们把csv文件读入列表中,写文件时会把列表中的元素写入到csv文件中。

list = ["1", "2", "3", "4"]
out = open(outfile, "w")
csv_writer = csv.writer(out)
csv_writer.writerow(list)

可能遇到的问题:直接使用这种写法会导致文件每一行后面会多一个空行。

解决办法如下:

out = open(outfile, "w", newline="")
csv_writer = csv.writer(out, dialect="excel")
csv_writer.writerow(list)

在stackoverflow上找到了比较经典的解释,原来 python3里面对 str和bytes类型做了严格的区分,不像python2里面某些函数里可以混用。所以用python3来写wirterow时,打开文件不要用wb模式,只需要使用w模式,然后带上newline=''。

3、示例

  • 简单读写
import csv
 
class writer:
  def __init__(self):
    self.dict = {
      "标题": "标题",
      "链接": "链接",
      "服务": "服务",
      "dsr": "dsr",
      "店铺名": "店铺名",
      "价格": "店铺名",
      "付款人数": "付款人数",
      "发货地": "发货地",
    }
    out = open("outfile.csv", "w", newline="")
    self.csv_writer = csv.writer(out, dialect="excel")
    self.csv_writer.writerow(self.dict)
 
  def writer_to(self, key_value):
    self.csv_writer.writerow(key_value)
 
 
if __name__ == "__main__":
  a = writer()
  new = {
    "链接": "http://www.baidu.com",
    "标题": "我是标题",
  }
  a.dict.update(new)
  print(a.dict)
  a.writer_to(a.dict.values())
  • 结合爬虫
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
 
driver = ["1", "2"]
colspan = ["1", "2"]
try:
  out = open("类目.csv", "w", newline="")
except PermissionError:
  print("文件被其他程序占用")
  input("")
csv_writer = csv.writer(out, dialect="excel")
csv_writer.writerow(["宝贝ID", "类目"])
 
 
def open_chrome():
  driver[0] = webdriver.Chrome()
  driver[0].get("https://www.dianchacha.com")
  input("请登陆后按回车:")
 
 
def EC_located(one_group, value):
  """
   目的:简化代码长度,参数1选择one或者group切换选中模式
  :param value:要找的值【CSS选择器】
  :return:选择到的对象
  """
  wait = WebDriverWait(driver[0], 10)
  if one_group == "one":
    try:
      ecl = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, value)))
      return ecl
    except TimeoutException:
      print(value, "1元素未加载成功,等待超时")
  else:
    try:
      ecl = wait.until(
        EC.presence_of_all_elements_located((By.CSS_SELECTOR, value))
      )
      return ecl
    except TimeoutException:
      print(value, "1元素---组---未加载成功,等待超时")
 
 
def operating(ID):
  # 先获取ID输入框
  driver[0].get("https://www.dianchacha.com/item/info/index/iid/" + ID)
  html = driver[0].page_source
  if "未能找到亲的宝贝" not in html:
    colspans = EC_located("group", ".colspan-1")
    colspan[0] = str(colspans[1].text).replace("宝贝类目: ", "")
  else:
    return operating(ID)
  print(colspan)
 
 
def writer_txt():
  csv_writer.writerow([url[0], colspan[0]])
  print("保存", url[0], colspan[0], "成功")
 
 
url = ["0", "1"]
 
 
def main():
  open_chrome()
  file = "宝贝ID.txt"
  with open(file) as f:
    for line in f.readlines():
      url[0] = line
      print(line)
      operating(url[0])
      writer_txt()
    out.close()
    print("已完成")
 
 
if __name__ == "__main__":
  main()

以上就是利用python 读写csv文件的详细内容,更多关于python 读写csv文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现多线程下载文件的代码实例
Jun 01 Python
Python基础中所出现的异常报错总结
Nov 19 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
python如何基于redis实现ip代理池
Jan 17 Python
关于Django Models CharField 参数说明
Mar 31 Python
Python接口测试文件上传实例解析
May 22 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 Python
如何用Python 加密文件
Sep 10 #Python
Python 高效编程技巧分享
Sep 10 #Python
python操作redis数据库的三种方法
Sep 10 #Python
Python计算矩阵的和积的实例详解
Sep 10 #Python
python如何运行js语句
Sep 09 #Python
python如何爬取动态网站
Sep 09 #Python
python如何停止递归
Sep 09 #Python
You might like
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
解析PHP提交后跳转
2013/06/23 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
python跳出双层for循环的解决方法
2019/06/24 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
应用电子专业学生的自我评价
2013/10/16 职场文书
家长给小学生的评语
2014/01/30 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
夜不归宿检讨书
2014/02/25 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
先进个人事迹材料
2014/12/29 职场文书
团代会邀请函
2015/02/02 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
写给老师的保证书
2015/05/09 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书