利用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脚本将Bing的每日图片作为桌面的教程
May 04 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
设置python3为默认python的方法
Oct 31 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
浅谈Python中(&,|)和(and,or)之间的区别
Aug 07 Python
django API 中接口的互相调用实例
Apr 01 Python
python能在浏览器能运行吗
Jun 17 Python
python利用线程实现多任务
Sep 18 Python
Python importlib模块重载使用方法详解
Oct 13 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 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来自动调用不同服务器上的flash
2006/10/09 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
学习vue.js计算属性
2016/12/03 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
python返回昨天日期的方法
2015/05/13 Python
python删除过期文件的方法
2015/05/29 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
python中使用print输出中文的方法
2018/07/16 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
python函数的作用域及关键字详解
2019/08/20 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
Nike瑞士官网:Nike CH
2021/01/18 全球购物
广告学专业毕业生自荐信
2013/09/24 职场文书
商业街策划方案
2014/05/31 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
学期个人自我总结
2015/02/13 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书