利用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实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
python中随机函数random用法实例
Apr 30 Python
Windows安装Python、pip、easy_install的方法
Mar 05 Python
python 抓包保存为pcap文件并解析的实例
Jul 23 Python
python中seaborn包常用图形使用详解
Nov 25 Python
python列表推导式操作解析
Nov 26 Python
Python文件操作方法详解
Feb 09 Python
详解Django3中直接添加Websockets方式
Feb 12 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
Python接口自动化测试的实现
Aug 28 Python
Pycharm Git 设置方法
Sep 15 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微信公众号开发之简答题
2018/10/20 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
jQuery中add()方法用法实例
2015/01/08 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
jquery实现选项卡切换代码实例
2019/05/14 jQuery
初学node.js中实现删除用户路由
2019/05/27 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
python实现自动重启本程序的方法
2015/07/09 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
深入理解Python中的*重复运算符
2017/10/28 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
创业计划书六个要素
2013/12/26 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
安全例会汇报材料
2014/08/23 职场文书
医德医风自我评价
2014/09/19 职场文书
员工保密协议书
2014/09/27 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
租车协议书范本2014
2014/11/17 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
卡特教练观后感
2015/06/08 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js