lb5645284 发表于 2015-4-27 11:24:27

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

#
#   最近出了一趟差,是从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) on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
The path dosen't exist!
Created the path
打开文件:
写入数据:['one', 'two', 'three', 'four']
打开文件:
读取行:['one,two,three,four']
one,two,three,four
##################################################
打开文件:
写入数据:['one', 'two', 'three', 'four']
写入数据:['1', '2', '3']
写入数据:['a', 'b', 'c', 'd']
写入数据:['中国', '美国', '日本', '韩国', '新加坡']
打开文件:
读取行:['one,two,three,four']
读取行:['1,2,3']
读取行:['a,b,c,d']
读取行:['中国,美国,日本,韩国,新加坡']
one,two,three,four
1,2,3
a,b,c,d
中国,美国,日本,韩国,新加坡
>>>
  在C:\\test目录下面的情况:
  
  ====================================================
  代码部分:
  ====================================================



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
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)
125   else:
126         return os.path.split(absPath)
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]
查看完整版本: python开发_csv(Comma Separated Values)_逗号分隔值_常用导入导出格式_完整版_博主推荐