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調用的擴展。