利用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 urllib爬取百度云连接的实例代码
Jun 19 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 Python
python检索特定内容的文本文件实例
Jun 05 Python
Python实现微信翻译机器人的方法
Aug 13 Python
详解用python计算阶乘的几种方法
Aug 14 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
利用Python函数实现一个万历表完整示例
Jan 23 Python
Python3.9.1中使用split()的处理方法(推荐)
Feb 07 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
May 31 Python
教你如何使用Python Tkinter库制作记事本
Jun 10 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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
php如何连接sql server
2015/10/16 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
asp.net和php的区别点总结
2019/10/10 PHP
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
土木工程应届生求职信
2013/10/31 职场文书
楼面经理岗位职责范本
2014/02/18 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
python实现简单聊天功能
2021/07/07 Python
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript