Python之文件读写(csv文件,CSV库,Pandas库)
<p><strong>前言</strong></p><ol>
<li>一.Python文件读取</li>
<li>二、读取CSV文件</li>
</ol>
<p><span id="jump1"></span></p>
<h1 id="一python文件读取">一.Python文件读取</h1>
<hr>
<h4 id="1-open函数是内置函数之with操作">1. open函数是内置函数之with操作</h4>
<pre><code>- 关于路径设置的问题斜杠设置成D:\\文件夹\\文件或是D:/文件夹/文件
f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
</code></pre>
<ul>
<li>file: 必需,文件路径(相对或者绝对路径)。</li>
<li>mode: 可选,文件打开模式</li>
<li>buffering: 设置缓冲</li>
<li>encoding: 一般使用utf8</li>
<li>errors: 报错级别</li>
<li>newline: 区分换行符</li>
<li>closefd: 传入的file参数类型</li>
<li>opener:</li>
</ul>
<p>打开文件之后就要开始操作了,一个读取了,但是要是没有打开文件就会报错,或则在读取的过程中报错就不会关闭文件了,所以为了无论报错与否,在使用完文件后就要关闭文件。如下:</p>
<pre><code>try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
</code></pre>
<p>这样写太过于麻烦,Python中直接使用with来直接自动来帮我们调用close()</p>
<pre><code>with open('/path/to/file', 'r') as f:
print(f.read())
</code></pre>
<p>上面的写法和try...finally效果一样。</p>
<h4 id="2-读文件">2. 读文件</h4>
<blockquote>
<p>f.read()一次性读入所有数据,保险起见可以规定每次读取的数据大小,f.read(size)进行反复调用读取。</p>
</blockquote>
<blockquote>
<p>f.readline(),每次读取一行,f.readlines()一次读取多行另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。</p>
</blockquote>
<pre><code>for line in f.readlines():
print(line.strip()) # 把末尾的'\n'删掉
</code></pre>
<h4 id="3-写文件">3. 写文件</h4>
<p>和写文件一样,首先使用open函数直接打开但是传入标识符mode='w'即写入模式。<br>
可以调用f.write()写入内容,写完之后务必使用f.close()关闭文件。</p>
<pre><code>方法一:
f = open('/Users/michael/test.txt', 'w')
f.write('Hello, world!')
f.close()
方法二:
with open('/Users/michael/test.txt', 'w') as f:
f.write('Hello, world!')
</code></pre>
<ul>
<li>要写入或则是读取特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码。</li>
</ul>
<h4 id="4-多个文件的读写操作">4. 多个文件的读写操作</h4>
<pre><code>方法一:
with open('/home/xbwang/Desktop/output_measures.txt','r') as f:
with open('/home/xbwang/Desktop/output_measures2.txt','r') as f1:
with open('/home/xbwang/Desktop/output_output_bk.txt','r') as f2:
........
........
........
方法二:
with open('/home/xbwang/Desktop/output_measures.txt','r') as f:
........
with open('/home/xbwang/Desktop/output_measures2.txt','r') as f1:
........
with open('/home/xbwang/Desktop/output_output_bk.txt','r') as f2:
........
</code></pre>
<p><span id="jump2"></span></p>
<h1 id="二读取csv文件">二、读取CSV文件</h1>
<hr>
<h4 id="1-使用csv库进行读写操作">1. 使用csv库进行读写操作</h4>
<p>1.获取csv文件的文件表头</p>
<pre><code>#方式一
import csv
with open("D:\\test.csv") as f:
reader = csv.reader(f)
rows=
print(rows)
#方式二
import csv
with open("D:\\test.csv") as f:
#1.创建阅读器对象
reader = csv.reader(f)
#2.读取文件第一行数据
head_row=next(reader)
print(head_row)
</code></pre>
<p>2.读取文件的某一列数据</p>
<pre><code>说明使用csv.reader()返回一个reader对象,它将迭代给定csvfile中的行。
csvfile可以是任何支持迭代器协议的对象,
并在每次__next__()调用其方法时返回一个字符串- 文件对象和列表对象都是合适的。
import csv
with open("D:\\test.csv") as f:
reader = csv.reader(f)
column= for row inreader]
print(column)
</code></pre>
<p>3.写入csv文件</p>
<pre><code>import csv
with open("D:\\test.csv",'a') as f:
row=['曹操','23','学生','黑龙江','5000']
write=csv.writer(f)
write.writerow(row)
print("写入完毕!")
</code></pre>
<ul>
<li>writerow()方法是一行一行写入,</li>
<li>writerows方法是一次写入多行</li>
</ul>
<h4 id="2-使用pandas库进行csv文件操作">2. 使用pandas库进行csv文件操作</h4>
<p>1.读取csv的全部文件</p>
<pre><code>import pandas as pd
path= 'D:\\test.csv'
with open(path) as file:
data=pd.read_csv(file)
print(data)
</code></pre>
<p>2.读取文件前几行数据</p>
<pre><code>import pandas as pd
path= 'D:\\test.csv'
with open(path)as file:
data=pd.read_csv(file)
#读取前2行数据
head_datas = data.head(0)
head_datas = data.head(1)
print(head_datas)
说明head函数就是用来读取哪一行的
</code></pre>
<p>3.读取文件哪一行的全部内容</p>
<pre><code>import pandas as pd
path= 'D:\\test.csv'
with open(path)as file:
data=pd.read_csv(file)
#读取第一行所有数据
print(data.ix)
</code></pre>
<p>4.读取文件的哪几行数据</p>
<pre><code>import pandas as pd
path= 'D:\\test.csv'
with open(path)as file:
data=pd.read_csv(file)
#读取第一行、第二行、第四行的所有数据
print(data.ix[,:])
</code></pre>
<p>5.读取所有行和列数据</p>
<pre><code>import pandas as pd
path= 'D:\\test.csv'
with open(path)as file:
data=pd.read_csv(file)
#读取所有行和列数据
print(data.ix[:,:])
</code></pre>
</div>
<div id="MySignature" role="contentinfo">
<div id="TsruixiSignature">
<div>作者:睿晞</div>
<div>出处:https://www.cnblogs.com/tsruixi/</div>
<div>身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。</div>
<div>劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。</div>
<div>曾有一个业界大牛说过这样一段话,送给大家:
“华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”</div>
<div>本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.</div>
</div><br><br>
来源:https://www.cnblogs.com/tsruixi/p/11395160.html
頁:
[1]