利用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列表推导式的使用方法
Nov 21 Python
Python实现删除Android工程中的冗余字符串
Jan 19 Python
python 的列表遍历删除实现代码
Apr 12 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
python处理document文档保留原样式
Sep 23 Python
python图的深度优先和广度优先算法实例分析
Oct 26 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
python实现坦克大战
Apr 24 Python
Python ini文件常用操作方法解析
Apr 26 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
Python常用断言函数实例汇总
Nov 30 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 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中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
js常用自定义公共函数汇总
2014/01/15 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
Python中for循环和while循环的基本使用方法
2015/08/21 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
Python  Django 母版和继承解析
2019/08/09 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
python中round函数如何使用
2020/06/19 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
教师绩效考核方案
2014/01/21 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
单位委托书怎么写
2014/08/02 职场文书
教师外出学习心得体会
2016/01/18 职场文书