设为首页 收藏本站
查看: 1416|回复: 0

[经验分享] python开发_csv(Comma Separated Values)_逗号分隔值_常用导入导出格式_完整版_博主推荐

[复制链接]

尚未签到

发表于 2015-4-27 11:24:27 | 显示全部楼层 |阅读模式
#
#   最近出了一趟差,是从20号去的,今天回来...
#   就把最近学习的python内容给大家分享一下...
#
'''
在python中,CSV(Comma Separated Values),从字面上面理解为:逗号分隔值
举个例子,如:test_csv = 'one, two, three, 4, 5'
对于test_csv这个变量来说,他里面就存放着这样的值:逗号分隔的值。这样的形式
在导入和导出中非常常见,如python(version:3.3.2)的API中所描述的一样:
The so-called CSV(Comma Separated Values) format is the most
common import and export for spreadsheets and databases.
csv模块定义了以下函数:
csv.reader(csvfile, dialect = 'excel', **fmtparams)
Retuen a reader object which will iterate over lines
in the given csvfile.
A short usage example:
import csv
with open('eggs.csv', newline = '') as cf:
spamreader = csv.reader(cf, delimiter = ' ',  quotechar = '|')
for row in spamreader:
print(','.join(row))
csv.write(csvfile, dialect = 'excel', **fmtparams)
Return a writer object reaponsible for converting the
user's data into delimited strings on the given file-like
object.
A short usage example:
import csv
with open('eggs.csv', 'w', newline = '') as cf:
spamwrite = csv.writer(cf, delimiter = ' ', quotechar = '|', quoting = csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
'''
  一下是我做的demo:
  运行效果:



Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
The path [C:\test] dosen't exist!
Created the path [C:\test]
打开文件:[C:\test\test.csv]
写入数据:['one', 'two', 'three', 'four']
打开文件:[C:\test\test.csv]
读取行:['one,two,three,four']
one,two,three,four
##################################################
打开文件:[C:\test\test.csv]
写入数据:['one', 'two', 'three', 'four']
写入数据:['1', '2', '3']
写入数据:['a', 'b', 'c', 'd']
写入数据:['中国', '美国', '日本', '韩国', '新加坡']
打开文件:[C:\test\test.csv]
读取行:['one,two,three,four']
读取行:['1,2,3']
读取行:['a,b,c,d']
读取行:['中国,美国,日本,韩国,新加坡']
one,two,three,four
1,2,3
a,b,c,d
中国,美国,日本,韩国,新加坡
>>>
  在C:\\test目录下面的情况:
   DSC0000.png
  ====================================================
  代码部分:
  ====================================================



  1 #python csv
  2
  3 #Author : Hongten
  4 #MailTo : hongtenzone@foxmail.com
  5 #QQ     : 648719819
  6 #Blog   : http://www.iyunv.com/hongten
  7 #Create : 2013-08-21
  8 #Version: 1.0
  9
10 import os
11 import csv
12
13 '''
14     在python中,CSV(Comma Separated Values),从字面上面理解为:逗号分隔值
15     举个例子,如:test_csv = 'one, two, three, 4, 5'
16     对于test_csv这个变量来说,他里面就存放着这样的值:逗号分隔的值。这样的形式
17     在导入和导出中非常常见,如python(version:3.3.2)的API中所描述的一样:
18
19         The so-called CSV(Comma Separated Values) format is the most
20         common import and export for spreadsheets and databases.
21
22     csv模块定义了以下函数:
23
24         csv.reader(csvfile, dialect = 'excel', **fmtparams)
25             Retuen a reader object which will iterate over lines
26             in the given csvfile.
27     A short usage example:
28         import csv
29         with open('eggs.csv', newline = '') as cf:
30             spamreader = csv.reader(cf, delimiter = ' ',  quotechar = '|')
31             for row in spamreader:
32                 print(','.join(row))
33
34         csv.write(csvfile, dialect = 'excel', **fmtparams)
35             Return a writer object reaponsible for converting the
36             user's data into delimited strings on the given file-like
37             object.
38
39     A short usage example:
40         import csv
41         with open('eggs.csv', 'w', newline = '') as cf:
42             spamwrite = csv.writer(cf, delimiter = ' ', quotechar = '|', quoting = csv.QUOTE_MINIMAL)
43             spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
44             spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
45 '''
46
47 #global var
48 SHOW_LOG = True
49 #csv file apth
50 CSV_FILE_PATH = ''
51
52 def write_data_2_csv_file(path, data):
53     '''把数据写入到csv文件
54     这里对要写入的数据进行限制,
55     数据格式为一个列表:['one', 'two', 'three', 'four']
56     '''
57     if SHOW_LOG:
58         print('打开文件:[{}]'.format(path))
59     with open(path, 'w', newline = '') as cf:
60         writer = csv.writer(cf, delimiter = ',', quotechar = '|', quoting = csv.QUOTE_MINIMAL)
61         if SHOW_LOG:
62             print('写入数据:{}'.format(data))
63         writer.writerow(data)
64     
65 def write_datas_2_csv_file(path, datas):
66     '''把数据写入到csv文件
67     这里对要写入的数据进行限制,
68     数据格式为一个列表,列表里面的每一个元素都是一个列表:
69     [
70     ['one', 'two', 'three', 'four'],
71     ['1', '2', '3'],
72     ['a', 'b', 'c', 'd']
73     ]
74     '''
75     if SHOW_LOG:
76         print('打开文件:[{}]'.format(path))
77     with open(path, 'w', newline = '') as cf:
78         writer = csv.writer(cf, delimiter = ',', quotechar = '|', quoting = csv.QUOTE_MINIMAL)
79         for row in datas:
80             if SHOW_LOG:
81                 print('写入数据:{}'.format(row))
82             writer.writerow(row)
83
84 def read_csv_file(path):
85     '''读取指定的csv文件,并且把csv文件的内容以字符串的形式返回'''
86     if os.path.exists(path):
87         if SHOW_LOG:
88             print('打开文件:[{}]'.format(path))
89         content = ''
90         with open(path, newline = '') as cf:
91             reader = csv.reader(cf, delimiter = ' ', quotechar = '|')
92             try:
93                 for row in reader:
94                     if SHOW_LOG:
95                         print('读取行:{}'.format(row))
96                     c = ','.join(row) +'\n'
97                     content += c
98                 return content[0:-1]
99             except csv.Errow as e:
100                 sys.exit('file {}, line {} : {}'.format(path, reader.line_num, e))
101     else:
102         print('不存在文件:[{}]'.format(path))
103                 
104 def mkdirs(path):
105     '''创建多级目录'''
106     if os.path.exists(path):
107         if SHOW_LOG:
108             print('The path [{}] existing!'.format(path))
109     else:
110         if SHOW_LOG:
111             print('The path [{}] dosen\'t exist!'.format(path))
112         os.makedirs(path)
113         if SHOW_LOG:
114             print('Created the path [{}]'.format(path))
115
116 def get_path(absPath):
117     '''获取到一个绝对路径的目录,
118     如绝对路径:'C:\\test\\test.csv'
119     则返回的是'C:\\test'
120     '''
121     if os.path.exists(absPath):
122         if SHOW_LOG:
123             print('the path [{}] existing!'.format(absPath))
124         return os.path.split(absPath)[0]
125     else:
126         return os.path.split(absPath)[0]
127
128 def init():
129     global SHOW_LOG
130     SHOW_LOG = True
131     global CSV_FILE_PATH
132     CSV_FILE_PATH = 'C:\\test\\test.csv'
133     csv_dir = get_path(CSV_FILE_PATH)
134     mkdirs(csv_dir)
135         
136 def main():
137     init()
138     data = ['one', 'two', 'three', 'four']
139     datas = [
140     ['one', 'two', 'three', 'four'],
141     ['1', '2', '3'],
142     ['a', 'b', 'c', 'd'],
143     ['中国', '美国', '日本', '韩国', '新加坡']
144     ]
145     write_data_2_csv_file(CSV_FILE_PATH, data)
146     content = read_csv_file(CSV_FILE_PATH)
147     print(content)
148     print('#' * 50)
149     write_datas_2_csv_file(CSV_FILE_PATH,  datas)
150     content = read_csv_file(CSV_FILE_PATH)
151     print(content)
152
153     
154 if __name__ == '__main__':
155     main()
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61183-1-1.html 上篇帖子: python glob model 下篇帖子: Python lambda介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表