利用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装饰器由浅入深
Dec 09 Python
python中reader的next用法
Jul 24 Python
对python字典过滤条件的实例详解
Jan 22 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
tensorflow之并行读入数据详解
Feb 05 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
在python中修改.properties文件的操作
Apr 08 Python
Django数据结果集序列化并展示实现过程
Apr 22 Python
Python Django搭建网站流程图解
Jun 13 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 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
openflashchart 2.0 简单案例php版
2012/05/21 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
php去除HTML标签实例
2013/11/06 PHP
PHP经典面试题集锦
2015/03/19 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
基于hashlib模块--加密(详解)
2017/06/21 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Python线性方程组求解运算示例
2018/01/17 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
python读取文件名称生成list的方法
2018/04/27 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
Pandas中DataFrame基本函数整理(小结)
2020/07/20 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
八年级语文教学反思
2014/02/11 职场文书
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
二年级学生评语大全
2014/04/23 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
酒店员工培训方案
2014/06/02 职场文书
国庆节标语大全
2014/10/08 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书