python获取文件名后缀
A. python如何提取文件名字
一般完整的文件为:滑神“文件名”颤让链.“文件格式”,可以通过“.”来获取文件名。x0dx0aimport osx0dx0afile_name=[]x0dx0astr_file=os.getcwd()#当前脚本路径x0dx0afor dirpaths, dirnames, filenames in os.walk(str_file):x0dx0a for filename in filenames:x0dx0a if "." in filename:x0dx0ax0dx0a filename=filename.split(".")[0]#以“茄孙.”为分割点获取文件名x0dx0ax0dx0a file_name.append(filename)x0dx0ax0dx0aprint file_name
B. python函数深入浅出 13.os.listdir()函数详解
这是os模块下操作目录和文件相关的函数
listdir() 只返回文件夹下所有文件名的列表(list)
:
math 模块则会把参数转换伏颂高为 float。
listdir()方法语法格式如下:
参数
path -- 需要列出的目录路径,默认为当前路径
其他相关的操作文件(文件夹)函数如下:
当我们需要遍历某个文件夹下文件/目录通常有两种操作
当获取文件后如何获取其后缀名,判断是否指定格式的文档、图片比如txt,doc,bmp,png,gif,jpg等:
无
熟练操作文件和目录,可以帮组我们写批量脚本时更高效,也是重要的python基础缺尺之一。
对基础运行环境有疑问的,推荐参考: python函数深入浅樱庆出 0.基础篇
C. Python 拿来直接用的7个os读写文件的操作!网友:建议收藏!
在学习真实案例之前,我们先来了解一下Python文件操作的一些基本概念~~
如何创建读取和写出的文件对象,open()方法来搞定
他有两个参数,第一个就是读取的文件名称,第二个是可选的,指的是打开文件的模式,默认是读取文件。
当我们获取到读取文件对象fin之后我们就可以读取文件内容了,这里介绍两种方式。
第一种是直接读取文件内容,
第二种是按行读取文件内容。
区别在于如果你的文件非常大,如果直接读取效率会非常低下,甚至会撑爆内存。
所以按行读取按行处理就不会因为文件过大而产生问题了
文件读取完成之后写出文件有如下方式:
'\n'的意思是我们手动换行
最后关闭文件有两种方式
为什么要关闭文件呢?
如果不关闭他就会持续打开状态,琐事其他进程后者线程要操作它的时候就会报错
我们有时候写入非常大的数据的时候打开文件后会发现数据不是最新的?
这是因为python在写出文件是先写到内存中,等到一定的事件之后或者文件到达一定的数量之后才会写入到磁盘
所以我们如果想要看最新的数据,可直接调用如下方法
接下来我们使用数据进行测试
1. 文件读操作
文件读、写操作比较常见。读取文件,要先判断文件是否存在。
若文件存在,再读取;不存在,抛出文件不存在异常。
文件存在情况:
文件不存在情况:
open 后,务必要 close,这种写法有些繁琐,还容易出错。借助 with 语法,同时实现 open 和 close 功能,这是更常用的方法。
2.获取文件的后缀名
如何优雅地获取文件后缀名?os.path 模块,splitext 能够优雅地提取文件后缀。
3. 批量修改文件后缀名
修改之前
修改文件后缀名的文件方法如下:
从修改之后:
4. 获取文件名
有时拿到一个文件名时,名字带有路径。这时,使用 os.path、split 方法实现路径和文件的分离。
我们还可以直接使用使用os.path 模块,splitext 提取文件后缀名。
5.获取以指定后缀结尾的文件
当我们想要查询某路径下所有以固定后缀结尾的文件时,可以使用如下方法
6. 批量修改文件后缀名
后缀名批量修改,实现思路:
1. 遍历目录下的所有文件
2. 获取文件的后缀名
3. 如果后缀名命中为 old_ext,rename 重命名
defbatch_rename(work_dir, old_ext, new_ext):
"""
传递当前目录,原来后缀名,新的后缀名后,批量重命名后缀
7. 批量获取文件修改时间
os.walk 生成文件树结构,os.path.getmtime 返回文件的最后一次修改时间:
D. python文件名通常以什么结尾
python文件后缀一般有两个,分别是.py和.pyw。视窗用 python.exe 运行 .py,用 pythonw.exe 运行 .pyw 。
这纯粹是因为安装视窗版Python时,扩展名 .py 自动被登记为用 python.exe 运行的文件,而 .pyw 则被登记为用 pythonw.exe 运行。
相关推荐:《Python教程》
.py 和 .pyw 之间的“其它差别”全都是 python.exe 和 pythonw.exe 之间的差别。
跟 python.exe 比较起来,pythonw.exe 有以下的不同:
(1)执行时不会弹出控制台窗口(也叫 DOS 窗口)。
(2)所有向原有的 stdout 和 stderr 的输出都无效。
(3)所有从原有的 stdin 的读取都只会得到 EOF。
.pyw 格式是被设计来运行开发完成的纯图形界面程序的。
纯图形界面程序的用户不需要看到控制台窗口。
值得一提的是,开发纯图形界面程序的时候,你可以暂时把 .pyw 改成 .py,以便运行时能调出控制台窗口,看到所有错误信息,方便解决错误。
E. Python读取二进制文件
实际项目中经常遇到读取二进制问题,Python下读取二进制文件一般用Python的文件打开读写相关函数和struct.
1。获取文件名filename,可用对话框,也可以直接手写
2。打开文件,这里中是打开,像看书一样,只是打开书,还没有看里面的内容,可以看,也可以不看
binFile=open(filename,'rb')
3。那就看看吧,binFile现在就是书的名字了。这里我们读入4个字,如果read()将读入整个文件
context=binFile.read(4)
4。读入之后问题来了,context包含四个字(4Bytes),但这四个字是加密的(二进制)。这时要找翻译struct.unpack
realContext=struct.unpack(format,context)
5。format的就是加密规则了,由1,2,4,8个字节组成其他类型,或者其他类型的数组。
a,b,c,d=struct.unpack('4c',context)
读入四个字符
对应格式参考 www.jianshu.com/p/5a985f29fa81
6。打开文件后用完一定要关闭,和看书一个样,看完后要合上,不合上后果自己去想
binFile.close()
7。查找内容,文件内容可以一个一个字的按顺序读出,但如果已经知道内容在什么位置,可以用查找方式读出。
binFile.seek(100)
context=binFile.read(4)
读出100位置后面的4个字,(101,102,103,104)
8。Python还提供也一些高级读写功能,如整行读取等
F. python 获取文件后缀名
#!/usr/bin/卜亩python
import
os
dict
=
{}
for
d,
fd,
fl
in
os.walk('/home/ahda/Program/'):
for
f
in
fl:
sufix
=
os.path.splitext(f)[1][1:]
if
dict.has_key(sufix):
dict[sufix]
+=
1
else:
dict[sufix]
=
1
for
item
in
dict.items():
print
"%s
:
%s"
%
item
这态老里的关键是os.path.splitext()
这是跟楼上不同的地方型闭森。如abc/ef.g.h
楼上出来的后缀会是g.h
而我的是h
G. Python怎么获取当前目录指定扩展名的文件名
import os
import os.path
ext=input('请输入你要显示的文件的扩展名(如.py):')
print([f for f in os.listdir() if os.path.isfile(f) and os.path.splitext(f)[1]==ext])
H. Python中的模块
import os
print(os.name) # 操作系统名称 Windows nt 非Windows posix
print(os.sep) # 路径分隔符 Windows \ 其他 /
import os
# 使用 os.path 方法获取文隐扒件的路径
# 001.获取文件的绝对路径 使用abspath方法
print(os.path.abspath("04_模块导入.py"))
# 运行结果:D:\mypycharm\pythonProject\千峰培训\day11mole1\04_模块导入.py
# 002判断是否是文件 False
print(os.path.isdir(""))
# 运行结果: False
# 003.判断文件是灶拦昌否存在如果存在返回True 否则返回False
print(os.path.exists("mydir"))
# True
import os
files = "2020.12.22.test.py"
print(files.rpartition(".")[-1])
print(os.path.splitext(files)[-1])
# 运行结果:
# 获取文件的后缀名 py
# 获取衡键文件的后缀名 .py
import os
print(os.getcwd())
# 运行结果:
# D:\mypycharm\pythonProject\培训\day11mole1
import os
os.chdir("mydir")
print(os.getcwd())
# D:\mypycharm\pythonProject\培训\day11mole1\mydir
import os
os.rename("66.py","../99.py")
import os
# 001.删除文件
os.remove("../99.py")
# 002.删除空文件夹
os.rmdir("../mydir")
os.removedirs("mydir")
import os
os.mkdir("mydir")
import os
# 001.列出指定目录里所有的子目录和文件
print(os.listdir("D:\mypycharm\pythonProject"))
# 002.默认当前目录里的 子目录和文件
print(os.listdir())
# 运行结果:
# ['.idea', '千峰培训', '学校实习']
# ['03_mole.py', '04_模块导入.py', '05_os.py', '2020.12.22.tests.py', 'a01_mole1.py', 'a02_mole2.py', '__pycache__']
import os
print(os.environ)
print(os.environ["PATH"])
import os
import string # 字符串模块
import random
files = "test.jpg"
# 01.获取文件的后缀
surffix = os.path.splitext(files)[-1]
# print(surffix) # .jpg
# 02.生成所有大小写字母的列表
res = list(string.ascii_letters)
# print(string.ascii_letters)
# 运行结果;
# 03.将0-9添加到res中
for i in range(0, 10):
res.append(str(i))
# 04.随机生成文件名:
mystr = "".join(random.sample(res, 10)) # sample随机生成10个字符
# print(mystr)
# bJpED6dj2Y
# 05.将文件名和后缀拼接
print(mystr+surffix)
import sys
print(sys.path)
res = sys.stdin
print(res)
import math
# print(math.pi) # 3.141592653589793
print(math.factorial(5)) # 120
# 幂运算 第一个参数是底数 第二个参数是幂
print(math.pow(2, 3)) # 8.0
# 向上取整和向下取整
print(math.floor(15.999)) # 15
print(math.ceil(15.001)) # 16
# 四舍五入
print(round(123.51, 1)) # 123.5
# 三角函数
print(math.sin(math.pi / 6)) # sin(pi/6) 0.49999999999999994
print(math.cos(math.pi / 3)) # sin(pi/3) 0.5000000000000001
print(math.tan(math.pi / 4)) # sin(pi/6) 0.9999999999999999
# 开方
a = 9
b = 16
print(math.sqrt(a+b)) # 5.0
# 以e为底的指数函数
print(math.exp(a))
# 8103.083927575384
import random
# 01.random() 随机生成[0,1)之间的数 前闭后开
print(random.random()) # 生成[0,1)之间的小数
# 02.randint() 生成范围内的随机整数 全闭
print(random.randint(10, 20)) # 生成[10,20]之间的整数
# 03.randrange() 生成范围内的随机整数 前闭后开
print(random.randrange(10, 20)) # 生成[10,20)之间的整数
# 04.choice 参数是列表 随机从列表中取一个 取一次
print(random.choice([1, 2, 3, 4, 5, 6, 77, 8, 9]))
# 05.sample 的第一个参数 必须是一个可迭代对象
# 第二个参数代表着从可迭代对象从随机选取几个,选取的对象不能重复
print("".join(random.sample(["a", "b", "c", "d"], 3)))
import datetime as dt # 引入datetime 模块并将其命别名为dt
import time
import calendar # 引入日历模块
# 01.datetime模块
# 001.获取当前时间的具体信息
print(dt.datetime.now())
# 运行结果:
# 2020-12-26 15:36:36.408129
# 年 月 日 时 分 秒 毫秒
# 002.创建日期
print(dt.date(2020,1,1))
# 年月日 2020-01-01
# 003.创建时间
print(dt.time(16,30,30))
# 时 分 秒: 16:30:30
# 004.timedelta() 括号中的默认参数是天
print(dt.datetime.now()+dt.timedelta(3)) # 2020-12-25 15:50:15.811738
print(dt.datetime.now()+dt.timedelta(hours=3)) # 2020-12-22 18:51:41.723093
print(dt.datetime.now()+dt.timedelta(minutes=10)) # 2020-12-22 16:01:41.723093
# 02.time
# 001.当前时间的时间戳
# 时间戳是指从1970—01-01 0:0:0到现在的秒数 utc时间 也叫格林尼治时间
print(time.time())
# 002.按照指定格式输出时间
# print(time.strftime("%Y-%m-%d %H:%M:%S")) # 2020-12-22 15:57:49
# 时间格式:
# %Y Year with century as a decimal number.
# %m Month as a decimal number [01,12].
# %d Day of the month as a decimal number [01,31].
# %H Hour (24-hour clock) as a decimal number [00,23].
# %M Minute as a decimal number [00,59].
# %S Second as a decimal number [00,61].
# %z Time zone offset from UTC.
# %a Locale's abbreviated weekday name.
# %A Locale's full weekday name.
# %b Locale's abbreviated month name.
# %B Locale's full month name.
# %c Locale's appropriate date and time representation.
# %I Hour (12-hour clock) as a decimal number [01,12].
# %p Locale's equivalent of either AM or PM.
# 003.ctime 和 asctime 时间格式 输出的时间格式一样,
# print(time.asctime()) # Tue Dec 22 15:57:49 2020
# print(time.ctime()) # Tue Dec 22 15:58:35 2020
# 004.sleep() 时间休眠
print("我负责浪")
print(time.sleep(3))
print("你负责漫")
# 005.calender 生成日历
res = calendar.calendar(2021) # 生成2021年的日历
print(res)
# 006.判断是否为闰年
print(calendar.isleap(2020)) # True
# 007.从1988年 到 2020年有多少个闰年
print(calendar.leapdays(1988, 2020)) # 8
I. python 获取文件后缀名
程序代码如下所示:
importos
dict={}
ford,fd,flinos.walk(r"F:\"):
forfinfl:
sufix=os.path.splitext(f)[1][1:]
ifdict.has_key(sufix):
dict[sufix]+=1
else:
dict[sufix]=1
foritemindict.items():
print"%s:%s"%item
第二行:创建一个字典用来保存文件后缀名及个数;
第三行:循环的目的主要就是os.path.splitext()分离后缀名和文件名;
最后打印输出。
J. python文件后缀名是什么
Python程序的扩展名有.py、.pyc、.pyo和.pyd。.py是源文件,.pyc是源文件编译后的文件,.pyo是源文件优化编译后的文件,.pyd是其他语言写的Python库。
在写Python程序时我们常见的扩展名是py,pyc,其实还有其他几种扩展名。以下是详细内容介绍:
py:py就是最基本的源码扩展名。Windows下直接双击运行会调用Python.exe执行。
pyw:pyw是另一种源码扩展名,跟py唯一的区别是在Windows下双击pyw扩展名的源码会调用Pythonw.exe执行源码,这种执行方式不会有命令行窗口。主要用于GUI程序发布时不需要看到控制台信息的情况。
pyc:在执行Python代码时经常会看到同目录下自动生成同名的pyc文件。这是Python源码编译后的字节码,一般会在代码执行时自动生成你代码中引用的py文件的pyc文件。这个文件可以直接执行,用文本编辑器打开也看不到源码。
pyo:pyo是跟pyc类似的优化编码后的文件。
pyd:pyd并非从Python程序生成,而是其他语言写成的可以被Python调用的扩展。