利用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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
Python多进程同步Lock、Semaphore、Event实例
Nov 21 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python读取数据集并消除数据中的空行方法
Jul 12 Python
Python3爬虫全国地址信息
Jan 05 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
python实现桌面托盘气泡提示
Jul 29 Python
python协程gevent案例 爬取斗鱼图片过程解析
Aug 27 Python
python 视频逐帧保存为图片的完整实例
Dec 10 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
Django+Django-Celery+Celery的整合实战
Jan 20 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
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
JavaScript中this详解
2015/09/01 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
Python import自定义模块方法
2015/02/12 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
python计算auc指标实例
2017/07/13 Python
Python中常见的异常总结
2018/02/20 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
pandas 将索引值相加的方法
2018/11/15 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
执行力心得体会
2013/12/31 职场文书
教师评优事迹材料
2014/01/10 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
律政俏佳人观后感
2015/06/09 职场文书
详解java如何集成swagger组件
2021/06/21 Java/Android