怎么用Python来读取文件后缀和文件名

怎么用Python来读取文件后缀和文件名,第1张

import os
path = 'c:'
for i in oslistdir(path):
    if ospathisdir(path+'\\'+i):
        print('{0:<30}文件夹'format(i))
    elif ospathisfile(path+'\\'+i):
        f = isplit('')
        if len(f) >= 2:
            print('{0:<30}文件,文件名是:{1} 扩展名是:{2}'format(i,f[0],f[1]))
        else:
            print('{0:<30}文件'format(i))

python有个魔术变量__file__   #(前后各两个下划线)。这个变量就是当前文件的绝对路径

再利用Pyhon自带的os模块中的path模块可以处理路径,分理出目录和文件名。以下是示例代码。

import  os
folder,filename=ospathsplit(__file__)
print(folder,filename)

不明白可追问。

11 读取整个文件

要读取文件,需要一个包含几行文本的文件(文件PI_DESCtxt与file_readerpy在同一目录下)

PI_DESCtxt

31415926535
8979323846
2643383279
5028841971

file_readerpy

with open("PI_DESCtxt") as file_object:
contents = file_objectread()
print(contents)

我们可以看出,读取文件时,并没有使用colse()方法,那么未妥善的关闭文件,会不会导致文件收到损坏呢?在这里是不会的,因为我们在open()方法前边引入了关键字with,该关键字的作用是:在不需要访问文件后将其关闭

12文件路径

程序在读取文本文件的时候,如果不给定路径,那么它会先在当前目录下进行检索,有时候我们需要读取其他文件夹中的路径,例如:

现在文件PI_DESCtxt存储在python目录的子文件夹txt中

那么我们读取文本内容的代码得修改为:

with open("txt\PI_DESCtxt") as file_object:
contents = file_objectread()
print(contents)

给open参数传递的参数得给相对路径

在Windows中,使用反斜杠(\),但是由于python中,反斜杠被视为转义字符,在Windows最好在路径开头的单(双)引号前加上r

相对路径:即相对于程序文件的路径

绝对路径:即文本在硬盘上存储的路径

使用绝对路径的程序怎么写呢 ?

with open(r"D:\python\txt\PI_DESCtxt") as file_object:
contents = file_objectread()
print(contents)

13逐行读取

读取文件时,可能需要读取文件中的每一行,要以每一行的方式来检查文件或者修改文件,那么可以对文件对象使用for循环

file_path = 'txt\PI_DESCtxt'with open(file_path) as file_object:
for line in file_object:
print(line)

程序运行结果如下:

通过运行结果我们可以看出,打印结果中间有很多空白行,这些空白行是怎么来的呢?因为在这个文件中,每行的末尾都有一个看不见的换行符,而print语句也会加一个换行符,因此每行末尾就有2个换行符:一个来自文件,另外一个来自print,消除这些换行符,只需要使用方法rstrip()

file_path = 'txt\PI_DESCtxt'with open(file_path) as file_object:
for line in file_object:
print(linerstrip())

打印结果

通过运行结果我们可以看出,打印结果中间有很多空白行,这些空白行是怎么来的呢?因为在这个文件中,每行的末尾都有一个看不见的换行符,而print语句也会加一个换行符,因此每行末尾就有2个换行符:一个来自文件,另外一个来自print,消除这些换行符,只需要使用方法rstrip()

file_path = 'txt\PI_DESCtxt'with open(file_path) as file_object:
for line in file_object:
print(linerstrip())

打印结果

14创建一个包含文件各行内容的列表

使用关键字with时,open()返回的文件对象只能在with代码块可用,如果要在with代码块外访问文件的内容,可在with块中将文件各行存储在一个列表,并在with代码块外使用该列表

file_path = 'txt\PI_DESCtxt'with open(file_path) as file_object:
lines = file_objectreadlines()for line in lines:
print(linerstrip())

15使用文件的内容

在上面一节中我们提到把数据提取到内存中,那么我们就可以对数据进行随心所欲的 *** 作了

需要:将圆周率连在一起打印出来(删除空格),并打印其长度

file_path = 'txt\PI_DESCtxt'with open(file_path) as file_object:
lines = file_objectreadlines()pi_str = ''for line in lines:
pi_str += linestrip()print(pi_strrstrip())print(len(pi_strrstrip()))

file_path = 'txt\PI_DESCtxt'with open(file_path) as file_object:
lines = file_objectreadlines()pi_str = ''for line in lines:
pi_str += linestrip()print(pi_strrstrip())print(len(pi_strrstrip()))

注意最后print语句并没有缩进,如果是缩进的话就会每取一行打印一次

打印效果如下

同一文件夹,直接使用名称,就可以读取了,截图如下:

第一行:打开文本文件进行读 *** 作;

第二行:try语句;

第三行:一次性读取所有内容;

第四行:打印输出;

第五行:finally语句;

第六行:关闭文件。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/13032220.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-29
下一篇2025-08-29

发表评论

登录后才能评论

评论列表(0条)

    保存