数据分析之: 基本文件操作
查看数据和文件基本操作拿到数据后, 我们都会马上打开看看, 最直接的动作就是鼠标点开, 看看都有哪些文件夹, 里面都有哪些数据. 如果数据比较少, 这样简单粗暴的查看方式在时间上还是可以接受的. 但是如果数据文件很多, 特别是文件夹嵌套了很多层, 那这样的方式查看数据就不太明智了. 好在linux和python都提供了很多可以帮助我们快速浏览数据的工具. 例如linux下的cat, tree,..
查看数据和文件基本操作
拿到数据后, 我们都会马上打开看看, 最直接的动作就是鼠标点开, 看看都有哪些文件夹, 里面都有哪些数据. 如果数据比较少, 这样简单粗暴的查看方式在时间上还是可以接受的. 但是如果数据文件很多, 特别是文件夹嵌套了很多层, 那这样的方式查看数据就不太明智了. 好在linux和python都提供了很多可以帮助我们快速浏览数据的工具. 例如linux下的cat, tree, wc等, 还有python的系统工具库os(import os)等等.
查看文件
拿到数据后, 通常我们都要先看看一共有多少个文件, 结合使用ls, grep和wc几个linux命令行工具,就可以方便地查看了:
查看文件个数:
统计当前路径下的文件夹个数:
ls -l |grep "^d"|wc -l
统计当前路径下的文件的个数:ls -l |grep "^-"|wc -l
大致浏览:
如何想看看当前路径下的目录结构, 可以用shell中的 tree这个命令: tree .
查看文件内容:
-
在shell中查看文件:
cat [文件名] | less -
用python打开文件
open(filename, option )option设置常用的有:w 以写方式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )
其他python命令:
1) 检验给出的路径是否是一个文件:os.path.isfile()
2) python检验给出的路径是否是一个目录:os.path.isdir()
3) 判断是否是绝对路径:os.path.isabs()
4) 检验给出的路径是否真地存: os.path.exists()
5) 返回一个路径的目录名和文件名: os.path.split()
os.path.split('/home/dl/Data/test.txt')
Out[146]: ('/home/dl/Data', 'test.txt')
获取文件信息:
1) 获取文件大小:os.path.getsize(filename)
2) 修改文件权限与时间戳:os.chmod(file)
3) 获取文件大小:os.path.getsize(filename)
4) 返回指定目录下的所有文件和目录名: os.listdir()
5) 分离扩展名:os.path.splitext()
6) 获取路径名:os.path.dirname()
7) 获取文件名:os.path.basename()
创建文件
-
用shell命令行创建:
touch fileName -
python文件和目录创建方法:
1) 创建空文件os.mknod("test.txt")
2) 在当前路径下创建一个文件夹:os.mkdir(folderName)
3) 在非当前路径下创建文件夹, 需提供文件夹完整路径 folderPath:os.makedir(folderPath)
4)
删除文件
删除一个文件: os.remove()
删除多个目录:os.removedirs(r“c:\python”)
数据读写
读文件:
读文件有很多方法, 比如使用文件对象的readline()方法读取一行数据(内存需求小, 但是速度慢), 或者readlines()读取多行数据(内存需求大, 速度快, 最大的好处是可以方便地控制读取的行数), 还可以用for循环加上open()函数实现.
- readline()方法
f = open("test.txt") # 返回一个文件对象
line = f.readline() # 调用文件的 readline()方法
while line:
print(line, end = '')
line = f.readline()
f.close()
- readlines()方法
f = open("test.txt")
lines = f.readlines(10000) # f.readlines(n) n代表读取的行数
for line in lines:
print(line)
f.close()
- for循环读取文件
for line in open("test.txt"):
print(line)
最后给出一个数据读写的例子:
import os
import numpy as np
testFile = "test.txt"
if not os.path.isfile(testFile):
os.mknod() #创建空文件
else:
fp = open(testFile,'+w') #直接打开一个文件,如果文件不存在则创建文件
for i in np.linspace(1,10,10):
fp.write('line'+str(i)+'\n')
fp.close()
for line in open(testFile):
print(line)更多推荐
所有评论(0)