利用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中每次处理一个字符的5种方法
May 21 Python
KMP算法精解及其Python版的代码示例
Jun 01 Python
python 实现红包随机生成算法的简单实例
Jan 04 Python
Python AES加密实例解析
Jan 18 Python
python爬取网易云音乐评论
Nov 16 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
Python socket实现的文件下载器功能示例
Nov 15 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
python适合做数据挖掘吗
Jun 16 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 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仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
ejs v9 javascript模板系统
2012/03/21 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
JQuery中extend使用介绍
2014/03/13 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
Cpy和Python的效率对比
2015/03/20 Python
Python如何实现文本转语音
2016/08/08 Python
python运行其他程序的实现方法
2017/07/14 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
对python调用RPC接口的实例详解
2019/01/03 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
营销总监岗位职责范本
2014/02/26 职场文书
租房协议书范例
2014/10/14 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
微信小程序调用python模型
2022/04/21 Python
Python如何将list中的string转换为int
2022/07/15 Ruby