Python_导入导出
目录与文件操作 - OS模块
目录操作
“./” 表示当前目录
“../“ 表示上一目录
Windows 中路径需要两个
\\
如下为示例:
E:\\my_computer\\1_工作学习
getcwd & os.chdir - 工作目录
- os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径。
- os.chdir(dirname): 改变工作目录到dirname
listdir - 文件与目录名
- os.listdir() 返回指定目录下的所有文件和目录名
|
|
目录结构
123456789 > # 参考> ## 工作目录为 /Users/ethan/coding/python>> Users/ethan> └── coding> └── python> ├── hello.py - 文件> └── web - 目录>
path.abspath - 绝对路径
- os.path.abspath(file) :获取文件或目录的绝对路径
- os.path.abspath(‘.’) :获取当前目录的绝对路径
|
|
path.dirname - 文件路径
- os.path.dirname(path):获取文件或文件夹的所在的路径
对比
os.path.abspath
hellp.py 得到的结果不同;
|
|
path.basename - 文件名称
- os.path.basename(path):获取文件名或文件夹名
|
|
path.split - 目录与文件名
- os.path.split(path):获取分离后的目录与文件名
|
|
path.splitext - 分离
- os.path.splitext(path):分离文件名与扩展名
事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在
|
|
path.join - 连接
- os.path.join(path, name) :连接目录与文件名或目录
####walk - 遍历
- os.walk() 遍历目录常用的模块,它返回一个包含 3 个元素的元祖:(dirpath, dirnames, filenames)。
dirpath 是以 string 字符串形式返回该目录下所有的绝对路径;
dirnames 是以列表 list 形式返回每一个绝对路径下的文件夹名字;
filesnames 是以列表 list 形式返回该路径下所有文件名字
|
|
path.sidir - 判断目录
- os.path.isdir(name): 判断name是不是目录,不是目录就返回false
path.exists - 判断存在
- os.path.exists(name) :判断是否存在文件或目录name
path.isfile - 判断存在
- os.path.isfile(name) :判断name这个文件是否存在,不存在返回false
mkdir - 创建
- os.mkdir(‘file’) :创建目录
rename - 重命名
- os.rename(“oldname”,”newname”) :重命名文件(目录)
文件操作
moknod - 创建
- os.moknod(‘text.txt’) : 创建空文件
remove - 移除
- os.remove():函数用来删除一个文件
open - 打开
要以任何方式打开文件(即使是打印文档),都必须先打开文件,这样才能访问它。
读取文本文件时,Python将其中的所有文本都解读为字符串。如果你读取的是数字,需要转为int/float
- open(file, [w]) :以某种方式打开文件
- with open(file, [w]) : with 关键字不再需要访问文件后将其关闭的操作;会自动关闭
r - 只读模式
w - 只写模式。覆盖之前的同名文件(即删除里面的所有内容)。如果文件不存在就创建文件
a - 追加模式打开。附加到现有文件;若文件不存在则创建一个;添加到文件末尾
r+ - 读写模式
w+ 以读写模式打开
a+ 以读写模式打开
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )
read - 读取
要以任何方式打开文件(即使是打印文档),都必须先打开文件,这样才能访问它。
读取文本文件时,Python将其中的所有文本都解读为字符串。如果你读取的是数字,需要转为int/float
- 所谓字符串,是指可以在内部查找的文档格式。
- tb0.realine(): 读取第一行的数据,以 ( 字符串str ) 形式返回文件数据 ; 此时源数据 tb0已经缺少了第一行的数据
- tb0.readlines():按行读取所有的数据,以[ 列表list ],准确的说包含字符串str的列表list,并且也包含换行符(\n),制表符(\t) 形式返回文件数据
- tb0.read() :一次性读取所有数据,类型为 ( 字符串str )
- 末尾多一行空行
|
|
|
|
write - 写入
- write 不会在文本末尾添加换行符(\n),若写入多行时,建议在最后添加换行符 \n.
tb1.write('I love programming.\n')
r - 只读模式
w - 只写模式。覆盖之前的同名文件(即删除里面的所有内容)。如果文件不存在就创建文件
a - 追加模式打开。附加到现有文件;若文件不存在则创建一个;添加到文件末尾
r+ - 读写模式
w+ 以读写模式打开
|
|
##【实战演练】
【获取上一层次目录中,test文件夹内的所有文件,并选取csv格式的文档】
|
|
【获取其他目录下的文件】
|
|
导入与导出 - pandas
导入数据
pandas默认将表格型数据读取为数据框格式(DataFrame)
“./” 表示当前目录
“../“ 表示上一目录
import pandas as pd
import numpy as npdf:任意的Pandas DataFrame对象
s:任意的Pandas Series对象
- pd.read_csv(“./filename.txt”, sep=’,’, header=0, names=[‘a’,’b’], skiprows=0, index_col=’a’, na_values=’NULL’, nrows=1000, encoding=’gb2312’, thousands= ‘,’) :从CSV文件导入数据
sep =’\s+’ 正则表达式的空白字符串
header=0,表示默认第一行为列名; header=None 没有列名行
names=[‘a’, ‘b’] 用于指定列名,与header=None结合使用
skiprows=0, skiprows=[0,2,3] 表示跳过的观测行;
skip_footer=0,表示忽略的行数(从文件末尾算起)
index_col =[‘a’,’b’] 表示指定为索引列
na_valuse = [‘Null’] 一组将NA值替换为指定的字符’Null’ 或其他任意形式
nrows=1000 表示读取的行数,从文件开始处算起
thousands=’,’ / ‘.’ 千分位分隔符
|
|
- pd.read_excel(filename):从Excel文件导入数据
- pd.read_table(filename):从限定分隔符(默认为制表符 “\t”)的文本文件导入数据; 也可读csv格式的文档,但建议将sep=’,’
- pd.read_sql(query, connection_object):从SQL表/库导入数据
- pd.read_json(json_string):从JSON格式的字符串导入数据
- pd.read_html(url):解析URL、字符串或者HTML文件,抽取其中的tables表格
- pd.read_clipboard():从你的粘贴板获取内容,并传给read_table()
- pd.DataFrame(dict):从字典对象导入数据,Key是列名,Value是数据
####数据清洗
|
|
显示所有行数
pandas默认会隐去中间的部分。如果希望能显示完整,可以使用下面的方法:
- 一次性设置Pandas运行环境,以便输出所有记录;
|
|
- 针对特定输出,设置Pandas参数。运行之后,再恢复到默认值
|
|
导出数据
缺失值 在输出结果中为 空字符串;
- DataFrame.to_cvs(‘filename.csv’, sep=’,’, na_rep=’NULL’, index=False, header=False, cols=[‘a’,’b’,’c’]):导出数据到CSV文件
- df.to_excel(filename):导出数据到Excel文件
- DataFrame.to_excel(excel_writer, sheet_name=’Sheet1’, na_rep=’’, float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep=’inf’, verbose=True, freeze_panes=None)
excel_writer : string or ExcelWriter object. File path or existing ExcelWriter
na_rep : string, default ‘’ . Missing data representation
float_format : string, default None. Format string for floating point numbers
columns : sequence, optional. Columns to write ;表示需要导出的列
header : boolean or list of string, default True; 表示可以重命名列名
index : boolean, default True ;是否包含索引列
index_label : string or sequence, default None
startrow :upper left cell row to dump data frame
encoding: string, default None
- df.to_sql(table_name, connection_object):导出数据到SQL表
- df.to_json(filename):以Json格式导出数据到文本文件
|
|
【实战演练】
将所有CSV文档读入到同一个对象
|
|