利用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类继承与子类实例初始化用法分析
Apr 17 Python
详解python的数字类型变量与其方法
Nov 20 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
python Opencv将图片转为字符画
Feb 19 Python
python实现三次样条插值
Dec 17 Python
python频繁写入文件时提速的方法
Jun 26 Python
Python代码太长换行的实现
Jul 05 Python
python实现按行分割文件
Jul 22 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
tensorflow 变长序列存储实例
Jan 20 Python
python实现IOU计算案例
Apr 12 Python
Python3压缩和解压缩实现代码
Mar 01 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分页函数
2006/10/09 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
向领导表决心的话
2014/03/11 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
产品质量保证书
2014/04/29 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
办公经费申请报告
2015/05/15 职场文书
创业计划书之网吧
2019/10/10 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js