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) [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目录下面的情况:
====================================================
代码部分:
====================================================
1 #python csv 2 3 #Author : Hongten 4 #MailTo : hongtenzone@foxmail.com 5 #QQ : 648719819 6 #Blog : http://www.cnblogs.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()