os模块和fileinput模块的用法解析

来源:互联网 发布:无线摄像头破解软件 编辑:程序博客网 时间:2024/06/11 01:26

一 fileinput 模块

基本使用方法

import fileinputdef SCQ_fileinput():    with fileinput.input(['file1.txt','file2.txt']) as lines:  #用with语句,两个文件以列表形式提供给input()函数作为参数        for line in lines:         #迭代处理两个文件            print('总第%d行,'% fileinput.lineno(),'文件%s中第%d行:'%(fileinput.filename(),fileinput.filelineno()))            print(line.strip())if __name__ == '__main__':    SCQ_fileinput()

运行结果

总第1行, 文件file1.txt中第1行:input()     #返回能够用于迭代一个或多个文件中所有行的对象总第2行, 文件file1.txt中第2行:filename()    #返回当前文件的名称总第3行, 文件file1.txt中第3行:lineno()      #返回当前读取的行的数量总第4行, 文件file2.txt中第1行:isfirstline()   #返回当前行是否文件的第一行总第5行, 文件file2.txt中第2行:filelineno()    # 返回当前读取在文件中的行数

input() #返回能够用于迭代一个或多个文件中所有行的对象
filename() #返回当前文件的名称
lineno() #返回当前读取的行的数量
filelineno() # 返回当前读取在文件中的行数

input 也支持上下文管理器,可以使用with语句进行操作,而不用再使用后手工关闭对象

二 os模块

1 获得当前路径

import osprint('当前目录是:"%s"'%(os.getcwd()))print('当前目录是:', os.getcwd())运行结果当前目录是:"D:\PycharmProjects\python 定向爬虫"当前目录是: D:\PycharmProjects\python 定向爬虫

2 显示当前使用的平台

>>> import os>>> os.name'nt'                  #表示windows>>> import os>>> os.name'posix'           #表示linux

3 获得目录中的内容
os.listdir(path),path 是获得内容目录的路径

import osprint(os.listdir())['.idea', '00.py', '01.py', 'fastq_phred.py', 'file1.txt', 'file2.txt', 'grasp_loci_GSA.py', 'grasp_loci_GSA_00.py', 'grasp_ncbi_snp.py', 'grasp_wegene_snp.py', 'GSA.py', 'illumina_snp_id.txt', 'IonXpress_001.fq', 'my.txt', 'phred_switch.py', 'python 单线程爬虫', 'result_IonXpress_001.fq', 'SNP.py', 'SNP.xlsx', 'snp0.xlsx', 'snp_result', 'wegene.xlsx', 'wegene0.xlsx', 'WEGENEN.py', 'wegene_article.py', 'Xpath多线程爬虫', '基本正则表达式']

当前目录中的文件和目录的名称是以列表形式返回的

4 创建目录
os.makedirs(‘dirname/dirname’)#可生成多层递规目录

import osos.mkdir('sunchengquan')print(os.listdir())['.idea', '00.py', '01.py', 'fastq_phred.py', 'file1.txt', 'file2.txt', 'grasp_loci_GSA.py', 'grasp_loci_GSA_00.py', 'grasp_ncbi_snp.py', 'grasp_wegene_snp.py', 'GSA.py', 'illumina_snp_id.txt', 'IonXpress_001.fq', 'my.txt', 'phred_switch.py', 'python 单线程爬虫', 'result_IonXpress_001.fq', 'SNP.py', 'SNP.xlsx', 'snp0.xlsx', 'snp_result', '**sunchengquan**', 'wegene.xlsx', 'wegene0.xlsx', 'WEGENEN.py', 'wegene_article.py', 'Xpath多线程爬虫', '基本正则表达式']

5 删除目录

import osos.rmdir('sunchengquan')print(os.listdir())['.idea', '00.py', '01.py', 'fastq_phred.py', 'file1.txt', 'file2.txt', 'grasp_loci_GSA.py', 'grasp_loci_GSA_00.py', 'grasp_ncbi_snp.py', 'grasp_wegene_snp.py', 'GSA.py', 'illumina_snp_id.txt', 'IonXpress_001.fq', 'my.txt', 'phred_switch.py', 'python 单线程爬虫', 'result_IonXpress_001.fq', 'SNP.py', 'SNP.xlsx', 'snp0.xlsx', 'snp_result', 'wegene.xlsx', 'wegene0.xlsx', 'WEGENEN.py', 'wegene_article.py', 'Xpath多线程爬虫', '基本正则表达式']

使用os.rmdir删除的目录必须为空目录,否则函数出错,如果删除的目录不存在,也会报错

6 判断是否是目录

import osa = os.path.isdir('基本正则表达式')print(a)True   #表示是目录import osb = os.path.isdir('file1.txt')print(b)False   #为False则表示不是目录或不存在

7 判断是否为文件

import osb = os.path.isfile('file1.txt')print(b)True

8 重命名文件

>>> os.listdir()['.idea', '00.py', '01.py', 'dongman', 'fastq_phred.py', 'geckodriver.log', 'ghostdriver.log', 'grasp_loci_GSA.py', 'grasp_loci_GSA_00.py', 'grasp_ncbi_snp.py', 'grasp_wegene_snp.py', 'GSA.py', 'gwas.html','illumina_snp_id.txt', 'IonXpress_001.fq', 'phred_switch.py', 'python 单单线线程程爬爬虫虫', 'result_IonXpress_001.fq', 'SNP.py', 'SNP.xlsx', 'snp0.xlsx', 'snp_result', 'test', 'testexam0.xls', 'wegene.xlsx', 'wegene0.xlsx', 'WEGENEN.py', 'wegene_article.py', 'Xpath多多线线程程爬爬虫虫', '基基本本正正则则表表达达式式']>>> os.rename('00.py','000.py')>>> os.listdir()['.idea', '000.py', '01.py', 'dongman', 'fastq_phred.py', 'geckodriver.log', 'ghostdriver.log', 'grasp_loci_GSA.py', 'grasp_loci_GSA_00.py', 'grasp_ncbi_snp.py', 'grasp_wegene_snp.py', 'GSA.py', 'gwas.html', 'illumina_snp_id.txt', 'IonXpress_001.fq', 'phred_switch.py', 'python 单单线线程程爬爬虫虫', 'result_IonXpress_001.fq', 'SNP.py', 'SNP.xlsx', 'snp0.xlsx', 'snp_result', 'test', 'testexam0.xls', 'wegene.xlsx', 'wegene0.xlsx', 'WEGENEN.py', 'wegene_article.py', 'Xpath多多线线程程爬爬虫虫', '基基本本正正则则表表达达式式']

9 显示当前平台下路径分隔符

>>> os.sep'\\'                #widows>>> os.sep'/'                 #linux

10 当前平台使用的行终止符

>>> os.linesep'\r\n'               #windows>>> os.linesep'\n'                #linux

11 显示当前绝对路径

>>> os.path.abspath('000.py')'D:\\PycharmProjects\\python 定定向向爬爬虫虫\\000.py'>>> os.path.dirname(os.path.abspath('000.py'))'D:\\PycharmProjects\\python 定定向向爬爬虫虫'os.path.dirname(path)#返回该路径的父目录

12 遍历某目录下的所有文件和目录

python可以使用os.walk()函数,递归 遍历指定目录下的所有文件和子目录,os.walk()函数返回的是一个可以迭代的生成器

import osb = os.walk('.')for i in b:print(i)('.\\', ['.idea', 'python 单线程爬虫', 'Xpath多线程爬虫', '基本正则表达式'], ['00.py', '01.py', 'fastq_phred.py', 'file1.txt', 'file2.txt', 'grasp_loci_GSA.py', 'grasp_loci_GSA_00.py', 'grasp_ncbi_snp.py', 'grasp_wegene_snp.py', 'GSA.py', 'illumina_snp_id.txt', 'IonXpress_001.fq', 'my.txt', 'phred_switch.py', 'result_IonXpress_001.fq', 'SNP.py', 'SNP.xlsx', 'snp0.xlsx', 'snp_result', 'wegene.xlsx', 'wegene0.xlsx', 'WEGENEN.py', 'wegene_article.py'])('.\\.idea', ['dictionaries', 'vV型从V型', '孤独鳏寡和'], ['.name', 'encodings.xml', 'misc.xml', 'modules.xml', 'python 定向爬虫.iml', 'workspace.xml'])('.\\.idea\\dictionaries', [], ['lenovo.xml'])('.\\.idea\\vV型从V型', [], [])('.\\.idea\\孤独鳏寡和', [], [])('.\\python 单线程爬虫', [], ['company.py', 'info.txt', 'jikexueyuan.py', 'needheader.py', 'tieba.py'])('.\\Xpath多线程爬虫', [], ['content.txt', 'python-dis.py', 'tiebaspider.py', 'xpath_regular.py', 'xpath_special.py', '__init__.py'])('.\\基本正则表达式', ['pic', 'picture', '__pycache__'], ['basic_re.py', 'jkxy_class1.py', 'pic-downloader.py', 'picdownloader.py', 'source.txt', 'text.txt', 'usere.py'])('.\\基本正则表达式\\pic', [], ['0.jpg', '1.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '15.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '2.jpg', '20.jpg', '21.jpg', '22.jpg', '23.jpg', '24.jpg', '25.jpg', '26.jpg', '27.jpg', '28.jpg', '29.jpg', '3.jpg', '30.jpg', '31.jpg', '32.jpg', '33.jpg', '34.jpg', '35.jpg', '36.jpg', '37.jpg', '38.jpg', '39.jpg', '4.jpg', '40.jpg', '41.jpg', '42.jpg', '43.jpg', '44.jpg', '45.jpg', '46.jpg', '47.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg'])('.\\基本正则表达式\\picture', [], ['0.jpg', '1.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '15.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '2.jpg', '20.jpg', '21.jpg', '22.jpg', '23.jpg', '24.jpg', '25.jpg', '26.jpg', '27.jpg', '28.jpg', '29.jpg', '3.jpg', '30.jpg', '31.jpg', '32.jpg', '33.jpg', '34.jpg', '35.jpg', '36.jpg', '37.jpg', '38.jpg', '39.jpg', '4.jpg', '40.jpg', '41.jpg', '42.jpg', '43.jpg', '44.jpg', '45.jpg', '46.jpg', '47.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg'])('.\\基本正则表达式\\__pycache__', [], [])

os.walk()遍历当前目录后输出的格式是多个元组,每个元组的第一项为遍历的目录名(字符串),第二项为遍历目录中的子目录列表,第三项为遍历目录中的所有文件的列表

13 由文件名批量获取姓名和考号

import osfilenames = []for a,b,files in os.walk('.\\test'):    if files:        filenames.append([file[:-4] for file in files]) #列表推导式print(filenames)fname = 'testexam'i=0for files in filenames:    f=open(fname+str(i)+'.xls','w')    for name in files:        f.write(name[-2:]+'\t'+name[:-2]+'\n')    f.close()    i+=1print('成功生成')'还可以这样书写'for files in filenames:    with open(fname+str(i)+'.xls','w') as f :        for name in files:            f.write(name[-2:]+'\t'+name[:-2]+'\n')       i+=1print('成功生成')
结果:[['小明52', '张三15', '李四98']]成功生成

这里写图片描述
这里写图片描述