欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python基礎(chǔ)文件操作方法超詳細(xì)講解(詳解版)

 更新時間:2025年04月07日 11:17:39   作者:孜孜孜孜不倦  
文件就是操作系統(tǒng)為用戶或應(yīng)用程序提供的一個讀寫硬盤的虛擬單位,文件的核心操作就是讀和寫,這篇文章主要介紹了Python基礎(chǔ)文件操作方法超詳細(xì)講解的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、文件操作

1. 文件打開與關(guān)閉

1.1 打開文件

在Python中,你可以使用 open() 函數(shù)來打開文件。

以下是一個簡單的例子:

# 打開文件(默認(rèn)為只讀模式)
file_path = 'example.txt'
with open(file_path, 'r') as file:
    # 執(zhí)行文件操作,例如讀取文件內(nèi)容
    file_content = file.read()
    print(file_content)

# 文件在with塊結(jié)束后會自動關(guān)閉,無需顯式關(guān)閉文件

在上述示例中:

  • 'example.txt' 是文件的路徑和名稱,你可以根據(jù)實際情況修改為你想要打開的文件。

  • 'r' 表示只讀模式。如果你想要寫入文件,可以使用 'w' 模式,如果想要追加內(nèi)容,可以使用 'a' 模式等。

  • with open(...) as file : 是使用上下文管理器的方式,確保文件在使用后被正確關(guān)閉,即使在處理文件時發(fā)生異常也能保證關(guān)閉。

1.2 關(guān)閉文件

在 Python 中關(guān)閉文件有兩種主要的方法:

1.2.1 使用 with 語句

with 語句是一種上下文管理器,當(dāng)它的代碼塊執(zhí)行完畢時,會自動關(guān)閉文件。這是推薦的方式,因為它確保文件在使用完畢后被正確關(guān)閉,即使發(fā)生異常也能保證關(guān)閉。

file_path = 'example.txt'
with open(file_path, 'r') as file:
    # 執(zhí)行文件操作,例如讀取文件內(nèi)容
    file_content = file.read()
    print(file_content)
    # 文件在這里已經(jīng)被自動關(guān)閉

1.2.2 使用 close() 方法:

你可以顯式調(diào)用文件對象的 close() 方法來關(guān)閉文件。這種方法適用于一些特殊情況,但相對來說不如 with 語句簡潔和安全。

file_path = 'example.txt'
file = open(file_path, 'r')
try:
    # 執(zhí)行文件操作,例如讀取文件內(nèi)容
    file_content = file.read()
    print(file_content)
finally:
    file.close()

在使用 with 語句時,不需要顯式調(diào)用 close() 方法。如果你在代碼中打開了文件而沒有使用 with,請確保在適當(dāng)?shù)牡胤秸{(diào)用 close() 以關(guān)閉文件,以避免資源泄漏。

2. 訪問模式及說明

訪問模式說明
r以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認(rèn)模式。
w打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。
rb以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認(rèn)模式。
wb以二進制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
ab以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。
r+打開一個文件用于讀寫。文件指針將會放在文件的開頭。
w+打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a+打開一個文件用于讀寫,如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果改文件不存在,創(chuàng)建新文件用于讀寫。
rb+以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭
wb+以二進制格式打開一個文件用于讀寫。如果改文件已存在則會覆蓋。如果改文件不存在,創(chuàng)建新文件。
ab+以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果改文件不存在,創(chuàng)建新文件用于讀寫。

二、文件讀寫

1. 寫數(shù)據(jù)(write)

寫入數(shù)據(jù)通常涉及將信息保存到文件、數(shù)據(jù)庫或其他持久性存儲介質(zhì)中。以下是一些常見的數(shù)據(jù)寫入場景的示例:

1.1 寫入文本文件

使用內(nèi)置的 open 函數(shù)來打開文件并寫入內(nèi)容。確保使用適當(dāng)?shù)哪J剑ɡ纾?code>'w' 表示寫入)。

file_path = 'example.txt'

# 寫入文件
with open(file_path, 'w') as file:
    file.write("Hello, this is some data.")

1.2 寫入CSV文件

使用 csv 模塊來寫入CSV格式的文件。

import csv

csv_file_path = 'example.csv'

data = [['Name', 'Age', 'Occupation'],
        ['John Doe', 30, 'Engineer'],
        ['Jane Smith', 25, 'Designer']]

with open(csv_file_path, 'w', newline='') as csvfile:
    csv_writer = csv.writer(csvfile)
    csv_writer.writerows(data)  

1.3 寫入JSON文件

使用內(nèi)置的 json 模塊來寫入JSON格式的文件。

import json

json_file_path = 'example.json'

data = {"name": "John Doe", "age": 30, "occupation": "Engineer"}

with open(json_file_path, 'w') as jsonfile:
    json.dump(data, jsonfile)

1.4 寫入數(shù)據(jù)庫

使用數(shù)據(jù)庫連接庫(如 sqlite3、mysql-connector-python 等)與相應(yīng)的數(shù)據(jù)庫進行交互。

import sqlite3

# 連接到SQLite數(shù)據(jù)庫(假設(shè)有一個名為 example.db 的數(shù)據(jù)庫)
conn = sqlite3.connect('example.db')

# 創(chuàng)建一個游標(biāo)對象
cursor = conn.cursor()

# 執(zhí)行SQL插入語句
cursor.execute("INSERT INTO users (name, age, occupation) VALUES (?, ?, ?)", ('John Doe', 30, 'Engineer'))

# 提交更改
conn.commit()

# 關(guān)閉連接
conn.close()

2. 讀數(shù)據(jù)(read)

讀取數(shù)據(jù)通常涉及從文件、數(shù)據(jù)庫或其他存儲介質(zhì)中檢索信息。以下是一些讀取數(shù)據(jù)的常見示例:

2.1 讀取文本文件

使用內(nèi)置的 open 函數(shù)來打開文件并讀取內(nèi)容。

file_path = 'example.txt'

# 讀取文件
with open(file_path, 'r') as file:
    data = file.read()
    print(data)

2.2 讀取CSV文件

使用 csv 模塊來讀取CSV格式的文件。

import csv

csv_file_path = 'example.csv'

# 讀取CSV文件
with open(csv_file_path, 'r') as csvfile:
    csv_reader = csv.reader(csvfile)
    for row in csv_reader:
        print(row)

2.3 讀取JSON文件

使用內(nèi)置的 json 模塊來讀取JSON格式的文件。

import json

json_file_path = 'example.json'

# 讀取JSON文件
with open(json_file_path, 'r') as jsonfile:
    data = json.load(jsonfile)
    print(data)

2.4 從數(shù)據(jù)庫中讀取數(shù)據(jù)

使用數(shù)據(jù)庫連接庫(如 sqlite3、mysql-connector-python 等)與相應(yīng)的數(shù)據(jù)庫進行交互。

import sqlite3

# 連接到SQLite數(shù)據(jù)庫(假設(shè)有一個名為 example.db 的數(shù)據(jù)庫)
conn = sqlite3.connect('example.db')

# 創(chuàng)建一個游標(biāo)對象
cursor = conn.cursor()

# 執(zhí)行SQL查詢語句
cursor.execute("SELECT * FROM users")

# 檢索所有行
rows = cursor.fetchall()

# 打印每一行
for row in rows:
    print(row)

# 關(guān)閉連接
conn.close()

2. 讀數(shù)據(jù)(readlines)

readlines 是 Python 中用于讀取文件的方法之一,它用于逐行讀取文件內(nèi)容,并將每一行作為字符串存儲在一個列表中。下面是對 readlines 方法的詳細(xì)解釋:

使用 readlines 方法的基本語法

with open('file.txt', 'r') as file:
    lines = file.readlines()

解釋:

  • open('file.txt', 'r') : 打開文件 'file.txt' 以供讀取。第一個參數(shù)是文件名,第二個參數(shù)是打開文件的模式。'r' 表示只讀模式。

  • with ... as ... : 使用 with 語句可以確保在讀取完成后自動關(guān)閉文件,不需要顯式調(diào)用 file.close()

  • lines = file.readlines() : readlines 方法用于讀取文件的所有行,并將每一行作為一個字符串存儲在列表 lines 中。

  • 每個列表元素對應(yīng)文件中的一行文本。你可以使用列表索引來訪問特定行,例如 lines[0] 表示文件的第一行。

例子:假設(shè) ‘file.txt’ 包含以下內(nèi)容:

Hello, this is line 1.
This is line 2.   
And this is line 3.   

使用 readlines 后:

with open('file.txt', 'r') as file:
    lines = file.readlines()

# lines 現(xiàn)在是一個包含每一行文本的列表
print(lines)
# 輸出:
# ['Hello, this is line 1.\n', 'This is line 2.\n', 'And this is line 3.\n']

# 訪問特定行
print(lines[0].strip())  # 輸出:Hello, this is line 1.

注意事項:

  • 每一行的末尾都包含換行符 \n,你可以使用 strip() 方法去除這些額外的空白字符。

  • readlines 方法適用于處理包含多行文本的文件,但對于大型文件,可能需要考慮逐行讀取而不是將整個文件加載到內(nèi)存中。這可以通過循環(huán)遍歷文件對象來實現(xiàn),而不是使用 readlines。

3. 讀數(shù)據(jù)(readline)

readline 是 Python 中用于讀取文件的方法之一,它用于逐行讀取文件內(nèi)容,并返回文件中的一行作為字符串。以下是對 readline 方法的詳細(xì)解釋:
使用 readline 方法的基本語法

with open('file.txt', 'r') as file:
    line = file.readline()

解釋:

  • open('file.txt', 'r') : 打開文件 'file.txt' 以供讀取。第一個參數(shù)是文件名,第二個參數(shù)是打開文件的模式。'r' 表示只讀模式。

  • with ... as ... : 使用 with 語句可以確保在讀取完成后自動關(guān)閉文件,不需要顯式調(diào)用 file.close()

  • line = file.readline() : readline 方法用于讀取文件的一行,并將該行作為一個字符串存儲在變量 line 中。

例子:假設(shè) ‘file.txt’ 包含以下內(nèi)容:

Hello, this is line 1.   
This is line 2.   
And this is line 3.   

使用 readline 后:

with open('file.txt', 'r') as file:
    line1 = file.readline()
    line2 = file.readline()
    line3 = file.readline()

print(line1)  # 輸出:Hello, this is line 1.
print(line2)  # 輸出:This is line 2.
print(line3)  # 輸出:And this is line 3.

注意事項:

  • 每個 readline 調(diào)用都會讀取文件的下一行。

  • 返回的字符串包含行末尾的換行符 \n。如果不需要換行符,可以使用 strip() 方法去除它。

  • 當(dāng)文件讀取完畢后,readline 將返回空字符串 ‘’,因此可以在循環(huán)中使用 while line != '' 來逐行讀取整個文件。

循環(huán)讀取整個文件:

with open('file.txt', 'r') as file:
    line = file.readline()
    while line != '':
        print(line.strip())  # 去除換行符
        line = file.readline()

這個循環(huán)將逐行讀取整個文件,直到文件末尾。

4. readlines 和 readline的區(qū)別

readlines 和 readline 是 Python 中用于讀取文件的兩種不同方法,它們之間有一些重要的區(qū)別:

4.1 readlines 方法:

  • 返回類型:readlines 方法返回一個包含文件所有行的列表,其中每個元素都是文件中的一行文本字符串。

  • 使用情況: 適用于處理包含多行文本的文件,可以一次性將整個文件加載到內(nèi)存中。這種方法適用于文件較小,可以完全裝入內(nèi)存的情況。

  • 例子:

with open('file.txt', 'r') as file:
    lines = file.readlines()`

4.2 readline 方法:

  • 返回類型: readline 方法每次調(diào)用只返回文件中的一行作為字符串。如果再次調(diào)用,將返回下一行。當(dāng)文件讀取完畢后,返回空字符串 ‘’。

  • 使用情況: 適用于逐行處理大型文件,可以有效地降低內(nèi)存使用。因為它一次只讀取一行,可以在循環(huán)中逐行處理文件,而不必將整個文件加載到內(nèi)存中。

  • 例子:

  with open('file.txt', 'r') as file:
      line = file.readline()
      while line != '':
          print(line.strip())  # 去除換行符
          line = file.readline()

4.3 區(qū)別總結(jié):

  • readlines 一次性讀取整個文件的所有行,并返回一個包含所有行的列表。

  • readline 逐行讀取文件,每次調(diào)用返回文件中的一行,適用于處理大型文件,減少內(nèi)存占用。

  • readlines 返回包含換行符的每一行,而 readline 返回單獨的行,需要手動去除換行符。

選擇使用哪個方法取決于文件的大小和處理需求。如果文件較小,可以完全裝入內(nèi)存,使用 readlines;如果文件較大,可以逐行處理,使用 readline

三、文件的相關(guān)操作

1. 文件重命名

Python 文件重命名是文件管理中的一個基本操作,可以通過 Python 的內(nèi)置庫來實現(xiàn)。以下是一個超詳細(xì)的入門指南,介紹如何使用 Python 重命名文件:

1.2 導(dǎo)入必要的庫

首先,您需要導(dǎo)入 Python 的 os 庫,它提供了許多與操作系統(tǒng)交互的函數(shù)。

import os

1.2 準(zhǔn)備文件列表

要重命名文件,您需要先列出指定目錄中的所有文件??梢允褂?nbsp;os.listdir() 函數(shù)來獲取目錄中的文件列表。

# 列出指定目錄中的所有文件和文件夾   
files = os.listdir('path_to_directory')

1.3 遍歷文件列表

接著,您需要遍歷文件列表,對每一個文件進行重命名。

for file in files:
    # 獲取文件的完整路徑
    full_path = os.path.join('path_to_directory', file)
    
    # 檢查是否是文件
    if os.path.isfile(full_path):
        # 新的文件名
        new_filename = 'new_name'
        
        # 重命名操作
        os.rename(full_path, os.path.join('path_to_directory', new_filename))
        print(f'Renamed {file} to {new_filename}')

1.4 異常處理

在重命名文件時,可能會出現(xiàn)各種異常,例如目標(biāo)文件已存在、沒有足夠權(quán)限等。為了確保程序的健壯性,應(yīng)該添加異常處理。

try:
    for file in files:
        # ...(上面的代碼)
except OSError as e:
    print(f'Error occurred: {e}')

1.5 完整的腳本示例

import os
# 指定要重命名文件的目錄
directory = 'path_to_directory'
# 列出目錄中的所有文件
files = os.listdir(directory)
# 遍歷文件列表并進行重命名
for file in files:
    if os.path.isfile(os.path.join(directory, file)):
        # 設(shè)定新的文件名
        new_filename = 'new_name'
        
        # 重命名文件
        try:
            os.rename(
                os.path.join(directory, file),
                os.path.join(directory, new_filename)
            )
            print(f'Renamed {file} to {new_filename}')
        except OSError as e:
            print(f'Error renaming {file}: {e}')

1.6 注意安全性和效

在批量重命名文件時,應(yīng)確保:

  • 不要同時進行多個重命名操作,以避免潛在的競爭條件。

  • 確保目標(biāo)目錄存在,避免在重命名時創(chuàng)建不存在的目錄。

  • 考慮到操作系統(tǒng)對文件重命名的限制,例如在 Windows 中,文件名不能超過 255 個字符,而在 Unix/Linux 中則沒有這個限制。

1.7 高級用法

對于更復(fù)雜的重命名任務(wù),您可以使用正則表達式或者其他文本處理方法來生成新的文件名。

import os
import re
# 指定目錄
directory = 'path_to_directory'
# 列出目錄中的所有文件
files = os.listdir(directory)
# 遍歷文件列表并進行重命名
for file in files:
    if os.path.isfile(os.path.join(directory, file)):
        # 使用正則表達式匹配文件名模式,并替換為新的模式
        new_filename = re.sub(r'\d+', 'new_prefix', file)
        
        # 重命名文件
        try:
            os.rename(
                os.path.join(directory, file),
                os.path.join(directory, new_filename)
            )
            print(f'Renamed {file} to {new_filename}')
        except OSError as e:
            print(f'Error renaming {file}: {e}')

這個腳本會將指定目錄中所有以數(shù)字開頭的文件重命名為新的前綴。

2. 刪除文件

在Python中,刪除文件是一個相對簡單的操作。我們可以使用os庫中的os.remove()函數(shù)來實現(xiàn)。以下是一個超詳細(xì)的入門指南,介紹如何使用Python刪除文件:

2.1 導(dǎo)入必要的庫

首先,您需要導(dǎo)入Python的 os 庫,它提供了許多與操作系統(tǒng)交互的函數(shù)。

import os

2.2 準(zhǔn)備文件路徑

要刪除文件,您需要知道要刪除的文件的路徑。

file_path = 'path_to_file'

2.3 檢查文件是否存在

在刪除文件之前,最好檢查該文件是否存在,以避免錯誤。

if os.path.isfile(file_path):
    print(f'File {file_path} exists, proceed to delete.')
else:
    print(f'File {file_path} does not exist, skip deletion.')

**2.4 執(zhí)行刪除操作

如果文件存在,您可以使用 os.remove() 函數(shù)來刪除它。

try:
    os.remove(file_path)
    print(f'File {file_path} deleted successfully.')
except OSError as e:
    print(f'Error occurred: {e}')

2.5 完整的腳本示例

import os
# 指定要刪除的文件的目錄
file_path = 'path_to_file'
# 檢查文件是否存在
if os.path.isfile(file_path):
    print(f'File {file_path} exists, proceed to delete.')
else:
    print(f'File {file_path} does not exist, skip deletion.')
# 執(zhí)行刪除操作
try:
    os.remove(file_path)
    print(f'File {file_path} deleted successfully.')
except OSError as e:
    print(f'Error occurred: {e}') 

2.6 注意安全性和效率

在批量刪除文件時,應(yīng)確保:

  • 不要同時進行多個刪除操作,以避免潛在的競爭條件。

  • 確保目標(biāo)目錄存在,避免在刪除時創(chuàng)建不存在的目錄。

  • 考慮到操作系統(tǒng)對文件刪除的操作限制,例如在 Windows 中,文件名不能超過 255 個字符,而在 Unix/Linux 中則沒有這個限制。

通過以上步驟,您應(yīng)該能夠掌握如何使用Python刪除文件。

3. 創(chuàng)建文件

在Python中,創(chuàng)建文件是一個相對簡單的操作。我們可以使用 os 庫中的 os.open() 函數(shù)或者 with 語句來創(chuàng)建文件。以下是一個超詳細(xì)的入門指南,介紹如何使用Python創(chuàng)建文件:

3.1 導(dǎo)入必要的庫

首先,您需要導(dǎo)入Python的 os 庫,它提供了許多與操作系統(tǒng)交互的函數(shù)。

import os   

3.2 準(zhǔn)備文件路徑

要創(chuàng)建文件,您需要知道要創(chuàng)建的文件的路徑。

file_path = 'path_to_file'   

3.3 檢查文件路徑是否存在

在創(chuàng)建文件之前,最好檢查該文件路徑是否存在,以避免覆蓋其他文件。

if not os.path.exists(file_path):
    print(f'File path {file_path} does not exist, proceed to create.')
else:
    print(f'File path {file_path} already exists, skip creation.')  

3.4 執(zhí)行創(chuàng)建操作

如果文件路徑不存在,您可以使用 os.open() 函數(shù)來創(chuàng)建文件。

try:
    with open(file_path, 'w') as f:
        print(f'File {file_path} created successfully.')
except IOError as e:
    print(f'Error occurred: {e}')

這里,我們使用 with 語句來確保文件在操作完成后會被正確關(guān)閉。'w' 參數(shù)表示以寫入模式打開文件,如果文件不存在,會創(chuàng)建一個新文件。

3.5 完整的腳本示例

import os
# 指定要創(chuàng)建的文件的目錄
file_path = 'path_to_file'
# 檢查文件路徑是否存在
if not os.path.exists(file_path):
    print(f'File path {file_path} does not exist, proceed to create.')
else:
    print(f'File path {file_path} already exists, skip creation.')
# 執(zhí)行創(chuàng)建操作
try:
    with open(file_path, 'w') as f:
        print(f'File {file_path} created successfully.')
except IOError as e:
    print(f'Error occurred: {e}')

3.6 注意安全性和效率

在創(chuàng)建文件時,應(yīng)確保:

  • 擁有創(chuàng)建文件的足夠權(quán)限。

  • 避免在內(nèi)存不足的情況下創(chuàng)建大型文件。
    通過以上步驟,您應(yīng)該能夠掌握如何使用Python創(chuàng)建文件。

4. 獲取當(dāng)前目錄

在Python中,我們可以使用 os 庫中的 os.getcwd() 函數(shù)來獲取當(dāng)前目錄的路徑。以下是一個示例:

import os
current_directory = os.getcwd()
print(f'Current directory is: {current_directory}')

這將會打印出當(dāng)前Python腳本所在目錄的路徑。

四、示例

1. 目錄.txt自動清洗

1.1 需要在二級標(biāo)題所在行最前面空4個格子,一級標(biāo)題不用

1.2 需要在章和節(jié)字的后面加上一個空格

1.3 需要在頁碼前面加上=>符號

# 獲取桌面路徑
import os
import re

desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")

# 目標(biāo)文件路徑
file_path = os.path.join(desktop_path, "目錄.txt")

# 打開文件并讀取內(nèi)容
with open(file_path, 'r', encoding='utf-8') as file:
    lines = file.readlines()

modified_lines = []
for line in lines:
    # 去除空格
    line = line.replace(" ", "")
    if len(line) == 1:
        continue
    # 使用正則表達式在'章'或'節(jié)'后面添加一個空格,僅在后面沒有空格的情況下
    line = re.sub(r'(章|節(jié))(?![ ])', r'\1 ', line)
    # 在小數(shù)點后添加空格
    line = re.sub(r'(\.\d)', r'\1 ', line)
    if '章' not in line:
        # 二級標(biāo)題添加4個空格
        line = ' ' * 4 + line
    # 匹配并去除最外層的英文括號
    pattern_en = r'\(([\d\s]+)\)'
    line = re.sub(pattern_en, r'\1', line)
    # 匹配并去除最外層的中文括號及其內(nèi)部內(nèi)容(包括除數(shù)字和空格以外的字符)
    pattern = r'(([^)]+))'
    line = re.sub(pattern, r'\1', line)
    # 確保每行只有一個 =>
    if '=>' not in line:
        # 在頁碼數(shù)字前添加 =>(只在行尾)
        line = re.sub(r'(\d+)$', r'=>\1', line)
    # 去除中文漢字和'=>整體符號左邊的冗余符號
    pattern = r'([\u4e00-\u9fff]+)[^\w\s]+=>'
    line = re.sub(pattern, r'\1=>', line)
    modified_lines.append(line)
# 將修改后的內(nèi)容寫回文件
with open(file_path, 'w', encoding='utf-8') as file:
    file.writelines(modified_lines)

# 讀取文件內(nèi)容
with open(file_path, 'r', encoding='utf-8') as file:
    content = file.read()
    print(content)

2. 批量修改文件夾下的文件命名

你可以使用 Python 的 os 模塊來實現(xiàn)對文件名的批量修改,結(jié)合字符串操作來確保文件名中的規(guī)定格式。以下是一個示例代碼:

import os

# 指定目錄路徑
directory_path = r'目標(biāo)文件夾絕對路徑'

# 獲取目錄下所有文件名
files = os.listdir(directory_path)

# 遍歷文件
for file_name in files:
    # 構(gòu)建完整的文件路徑
    file_path = os.path.join(directory_path, file_name)

    # 檢查文件是否是圖片文件,并且文件名中包含下劃線
    if file_name.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')) and '_' in file_name:
        # 分割文件名,以下劃線為界
        parts = file_name.split('_')

        # 確保分割后的第一部分為'00159231127'
        if parts[0] != '00159231127':
            # 構(gòu)建新文件名
            new_file_name = '00159231127' + '_' + '_'.join(parts[1:])

            # 構(gòu)建新文件路徑
            new_file_path = os.path.join(directory_path, new_file_name)

            # 重命名文件
            os.rename(file_path, new_file_path)
            print(f'Renamed: {file_name} -> {new_file_name}')

在上述代碼中:

1.使用 os.listdir 獲取目錄下的所有文件名,然后遍歷這些文件名。
2.通過 os.path.join 構(gòu)建完整的文件路徑,確保路徑的正確性。
3.檢查文件是否是圖片文件(以 .png, .jpg, .jpeg, .gif 結(jié)尾的文件),并且文件名中包含下劃線。
4.使用 split('_') 分割文件名,確保分割后的第一部分為'00159231127'
5.構(gòu)建新文件名,并使用 os.rename 來重命名文件。

在運行前,請確保備份文件或者在測試環(huán)境中運行,以免意外損壞文件。

3. 檢測同級目錄下是否存在同名文件夾

檢測 目標(biāo)路徑 下的文件夾命名前5位是否存在一樣的,如果一樣打印出來

你可以使用 Python 來檢查指定目錄下的文件夾,查找前5位命名相同的文件夾。以下是一個示例代碼:

import os

# 指定目錄路徑
directory_path = r'目標(biāo)路徑'

# 獲取目錄下所有文件夾名
folders = [folder for folder in os.listdir(directory_path) if os.path.isdir(os.path.join(directory_path, folder))]

# 創(chuàng)建一個空字典,用于存儲前5位相同的文件夾名
same_prefix_folders = {}

# 遍歷文件夾
for folder in folders:
    # 獲取前5位文件夾名
    prefix = folder[:5]

    # 檢查前5位文件夾名是否已經(jīng)在字典中
    if prefix in same_prefix_folders:
        # 將文件夾名添加到對應(yīng)的鍵值中
        same_prefix_folders[prefix].append(folder)
    else:
        # 若字典中沒有該前5位文件夾名,則創(chuàng)建鍵值對
        same_prefix_folders[prefix] = [folder]

# 輸出前5位相同的文件夾名
for prefix, folders in same_prefix_folders.items():
    if len(folders) > 1:
        print(f"前5位為 '{prefix}' 的文件夾有以下重復(fù)命名:")
        print(', '.join(folders)) 

這段代碼執(zhí)行以下操作:

1.使用 os.listdir 獲取指定目錄下的所有文件夾名。

2.然后遍歷這些文件夾名,提取前 5 位名稱,并將具有相同前綴的文件夾放入一個字典中。

3.最后打印出前 5 位相同的文件夾名。

總結(jié)

到此這篇關(guān)于Python基礎(chǔ)文件操作方法超詳細(xì)講解的文章就介紹到這了,更多相關(guān)Python基礎(chǔ)文件操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python修改游戲內(nèi)存的方法

    Python修改游戲內(nèi)存的方法

    本文給大家分享一個通過Python來修改游戲內(nèi)存的方法,幫助大家更改游戲中的數(shù)據(jù),步驟很簡單,而且有視頻講解,感興趣的朋友一起看看吧
    2021-11-11
  • 基于Python實現(xiàn)電影售票系統(tǒng)

    基于Python實現(xiàn)電影售票系統(tǒng)

    這篇文章主要介紹了通過Python實現(xiàn)一個簡單的電影售票系統(tǒng),文中的示例代碼對我們學(xué)習(xí)Python有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • python實現(xiàn)樹的深度優(yōu)先遍歷與廣度優(yōu)先遍歷詳解

    python實現(xiàn)樹的深度優(yōu)先遍歷與廣度優(yōu)先遍歷詳解

    這篇文章主要介紹了python實現(xiàn)樹的深度優(yōu)先遍歷與廣度優(yōu)先遍歷,詳細(xì)分析了樹的深度優(yōu)先遍歷與廣度優(yōu)先遍歷原理及Python相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-10-10
  • python scrapy拆解查看Spider類爬取優(yōu)設(shè)網(wǎng)極細(xì)講解

    python scrapy拆解查看Spider類爬取優(yōu)設(shè)網(wǎng)極細(xì)講解

    本篇博客為你帶來 scrapy.Spider 模塊中的相關(guān)函數(shù)與類,帶你再一次認(rèn)識 scrapy 的細(xì)節(jié)。本次采集的目標(biāo)站點為:優(yōu)設(shè)網(wǎng),有需要的朋友可以借鑒參考下
    2021-11-11
  • python 實現(xiàn)format進制轉(zhuǎn)換與刪除進制前綴

    python 實現(xiàn)format進制轉(zhuǎn)換與刪除進制前綴

    這篇文章主要介紹了python 實現(xiàn)format進制轉(zhuǎn)換與刪除進制前綴的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python使用OS模塊操作系統(tǒng)接口及常用功能詳解

    python使用OS模塊操作系統(tǒng)接口及常用功能詳解

    os是?Python?標(biāo)準(zhǔn)庫中的一個模塊,提供了與操作系統(tǒng)交互的功能,在本節(jié)中,我們將介紹os模塊的一些常用功能,并通過實例代碼詳細(xì)講解每個知識點
    2023-06-06
  • python騰訊語音合成實現(xiàn)過程解析

    python騰訊語音合成實現(xiàn)過程解析

    這篇文章主要介紹了python騰訊語音合成實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python Django模型詳解

    Python Django模型詳解

    這篇文章主要介紹了Django 模型類(models.py)的定義詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-10-10
  • Python自動化測試selenium指定截圖文件名的方法

    Python自動化測試selenium指定截圖文件名的方法

    這篇文章主要介紹了Python自動化測試selenium指定截圖文件名方法,Selenium 支持 Web 瀏覽器的自動化,它提供一套測試函數(shù),用于支持 Web 自動化測試,下文基于python實現(xiàn)指定截圖文件名方法,需要的小伙伴可以參考一下
    2025-02-02
  • Jmeter中JSR223設(shè)置變量方式

    Jmeter中JSR223設(shè)置變量方式

    本文主要介紹了JMeter的幾種常用變量設(shè)置方式,特別對JSR223設(shè)置變量進行了詳細(xì)解釋,JSR223是Java規(guī)范請求,可以向Java平臺增添新的API和服務(wù),JSR223Sampler可以使用JSR223腳本代碼執(zhí)行創(chuàng)建/更新變量所需的示例或一些計算
    2024-10-10

最新評論