操作文件和目录
os 模块提供了非常丰富的方法用来处理文件和目录。
os
os.sep
- os.sep根据所处的平台,自动采用相应的分隔符号。(在Windows上,文件的路径分隔符是’\’,在Linux上是’/’。)
import os
path = 'data' + os.sep + 'LogiReg_data.txt'
'data\\LogiReg_data.txt'
data_dir = os.sep.join(['hello', 'world'])
'hello\\world'
os.listdir(path)
- os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 ‘.’ 和’…’ 即使它在文件夹中。只支持在 Unix, Windows 下使用。
- 返回list(所有文件和文件夹名)。
import os
path='E:/workspace/AI'
dirs=os.listdir(path)
文件读取
open()
open() 将会返回一个文件(file) 对象,基本语法格式如下:open(filename, mode)
- mode:决定了打开文件的模式:只读(r),写入(w),追加(a)等。这个参数是非强制的,默认文件访问模式为只读®。
文件对象的方法
- f.read(size):将读取一定数目的数据, 然后作为字符串或字节对象返回。size 是一个可选的数字类型的参数:当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
- f.readline():会从文件中读取单独的一行。换行符为 ‘\n’。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
- f.readlines():返回该文件中包含的所有行。
with open('/path/to/file', 'r') as f:
print(f.read())
Pandas
pandas.read_csv()
读入以逗号为分隔符的数据文件,并以DataFrame类型返回。
pdData = pd.read_csv(path, header=None, names=['Exam 1', 'Exam 2', 'Admitted'])
Args:
- filepath_or_buffer:str, path object or file-like object
可以是任何有效的string路径,string可以是URL,有效的URL方案包括http,ftp,s3,file。 - sep:str, default ‘,’
若sep=None,则Python会自动检测分隔符。 - delimiterstr:, default None
定界符,备选分隔符(如果指定该参数,则sep参数失效)。 - header:int, list of int, default ‘infer’
指定行数用来作为列名,数据开始行数。
header=0,指定第一行为列名;header=None,通过Names指定列名。
header参数可以是一个list例如:[0,1,3],这个list表示将文件中的这些行作为列标题(意味着每一列有多个标题),介于中间的行将被忽略掉(例如本例中的2;本例中的数据1,2,4行将被作为多级标题出现,第3行数据将被丢弃,dataframe的数据从第5行开始。)。
注意:如果skip_blank_lines=True 那么header参数忽略注释行和空行,所以header=0表示第一行数据而不是文件的第一行。 - name:sarray-like, optional
用于结果的列名列表,如果数据文件中没有列标题行,就需要执行header=None。默认列表中不能出现重复,除非设定参数mangle_dupe_cols=True。 - index_col : int or sequence or False, default None
用作行索引的列编号或者列名,如果给定一个序列则有多个行索引。
如果文件不规则,行尾有分隔符,则可以设定index_col=False 来是的pandas不适用第一列作为行索引。 - mangle_dupe_cols : boolean, default True
重复的列,将‘X’…’X’表示为‘X.0’…’X.N’。如果设定为false则会将所有重名列覆盖。 - dtype : Type name or dict of column -> type, default None
每列数据的数据类型。例如 {‘a’: np.float64, ‘b’: np.int32} - skip_blank_lines boolean, default True
如果为True,则跳过空行;否则记为NaN。 - skiprows:跳过的行。eg:skiprows=1;skiprows=[1,2,4];skiprows=range(1,10)
文件写入
open()
- f.write(string) :将 string 写入到文件中, 然后返回写入的字符数。如果要写入一些不是字符串的东西, 那么将需要先进行转换。
with open('/path/to/file', 'w') as f:
num = f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )
print(num)
Pandas
import pandas as pd
d={'Year':[2018,2019,2020],'Month':[3,7,9]}
df=pd.DataFrame(d)
df.to_csv('E:\\worplace\\save.csv',sep=',',index=False,header=True)