亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、文件操作

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

1.1 打開(kāi)文件

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

以下是一個(gè)簡(jiǎn)單的例子:

# 打開(kāi)文件(默認(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é)束后會(huì)自動(dòng)關(guān)閉,無(wú)需顯式關(guān)閉文件

在上述示例中:

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

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

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

1.2 關(guān)閉文件

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

1.2.1 使用 with 語(yǔ)句

with 語(yǔ)句是一種上下文管理器,當(dāng)它的代碼塊執(zhí)行完畢時(shí),會(huì)自動(dòng)關(guān)閉文件。這是推薦的方式,因?yà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)被自動(dòng)關(guān)閉

1.2.2 使用 close() 方法:

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

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

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

2. 訪問(wèn)模式及說(shuō)明

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

二、文件讀寫(xiě)

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

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

1.1 寫(xiě)入文本文件

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

file_path = 'example.txt'

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

1.2 寫(xiě)入CSV文件

使用 csv 模塊來(lái)寫(xiě)入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 寫(xiě)入JSON文件

使用內(nèi)置的 json 模塊來(lái)寫(xiě)入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 寫(xiě)入數(shù)據(jù)庫(kù)

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

import sqlite3

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

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

# 執(zhí)行SQL插入語(yǔ)句
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ù)庫(kù)或其他存儲(chǔ)介質(zhì)中檢索信息。以下是一些讀取數(shù)據(jù)的常見(jiàn)示例:

2.1 讀取文本文件

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

file_path = 'example.txt'

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

2.2 讀取CSV文件

使用 csv 模塊來(lái)讀取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 模塊來(lái)讀取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ù)庫(kù)中讀取數(shù)據(jù)

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

import sqlite3

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

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

# 執(zhí)行SQL查詢語(yǔ)句
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)容,并將每一行作為字符串存儲(chǔ)在一個(gè)列表中。下面是對(duì) readlines 方法的詳細(xì)解釋:

使用 readlines 方法的基本語(yǔ)法

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

解釋:

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

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

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

  • 每個(gè)列表元素對(duì)應(yīng)文件中的一行文本。你可以使用列表索引來(lái)訪問(wèn)特定行,例如 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)在是一個(gè)包含每一行文本的列表
print(lines)
# 輸出:
# ['Hello, this is line 1.\n', 'This is line 2.\n', 'And this is line 3.\n']

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

注意事項(xiàng):

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

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

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

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

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

解釋:

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

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

  • line = file.readline() : readline 方法用于讀取文件的一行,并將該行作為一個(gè)字符串存儲(chǔ)在變量 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.

注意事項(xiàng):

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

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

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

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

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

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

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

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

4.1 readlines 方法:

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

  • 使用情況: 適用于處理包含多行文本的文件,可以一次性將整個(gè)文件加載到內(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)存使用。因?yàn)樗淮沃蛔x取一行,可以在循環(huán)中逐行處理文件,而不必將整個(gè)文件加載到內(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 一次性讀取整個(gè)文件的所有行,并返回一個(gè)包含所有行的列表。

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

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

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

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

1. 文件重命名

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

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

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

import os

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

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

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

1.3 遍歷文件列表

接著,您需要遍歷文件列表,對(duì)每一個(gè)文件進(jìn)行重命名。

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 異常處理

在重命名文件時(shí),可能會(huì)出現(xiàn)各種異常,例如目標(biāo)文件已存在、沒(méi)有足夠權(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)
# 遍歷文件列表并進(jìn)行重命名
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 注意安全性和效

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

  • 不要同時(shí)進(jìn)行多個(gè)重命名操作,以避免潛在的競(jìng)爭(zhēng)條件。

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

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

1.7 高級(jí)用法

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

import os
import re
# 指定目錄
directory = 'path_to_directory'
# 列出目錄中的所有文件
files = os.listdir(directory)
# 遍歷文件列表并進(jìn)行重命名
for file in files:
    if os.path.isfile(os.path.join(directory, file)):
        # 使用正則表達(dá)式匹配文件名模式,并替換為新的模式
        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}')

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

2. 刪除文件

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

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

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

import os

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

要?jiǎng)h除文件,您需要知道要?jiǎng)h除的文件的路徑。

file_path = 'path_to_file'

2.3 檢查文件是否存在

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

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ù)來(lái)刪除它。

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
# 指定要?jiǎng)h除的文件的目錄
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 注意安全性和效率

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

  • 不要同時(shí)進(jìn)行多個(gè)刪除操作,以避免潛在的競(jìng)爭(zhēng)條件。

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

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

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

3. 創(chuàng)建文件

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

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

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

import os   

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

要?jiǎng)?chuàng)建文件,您需要知道要?jiǎ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ù)來(lái)創(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 語(yǔ)句來(lái)確保文件在操作完成后會(huì)被正確關(guān)閉。'w' 參數(shù)表示以寫(xiě)入模式打開(kāi)文件,如果文件不存在,會(huì)創(chuàng)建一個(gè)新文件。

3.5 完整的腳本示例

import os
# 指定要?jiǎng)?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)建文件時(shí),應(yīng)確保:

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

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

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

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

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

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

四、示例

1. 目錄.txt自動(dòng)清洗

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

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

1.3 需要在頁(yè)碼前面加上=>符號(hào)

# 獲取桌面路徑
import os
import re

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

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

# 打開(kāi)文件并讀取內(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
    # 使用正則表達(dá)式在'章'或'節(jié)'后面添加一個(gè)空格,僅在后面沒(méi)有空格的情況下
    line = re.sub(r'(章|節(jié))(?![ ])', r'\1 ', line)
    # 在小數(shù)點(diǎn)后添加空格
    line = re.sub(r'(\.\d)', r'\1 ', line)
    if '章' not in line:
        # 二級(jí)標(biāo)題添加4個(gè)空格
        line = ' ' * 4 + line
    # 匹配并去除最外層的英文括號(hào)
    pattern_en = r'\(([\d\s]+)\)'
    line = re.sub(pattern_en, r'\1', line)
    # 匹配并去除最外層的中文括號(hào)及其內(nèi)部?jī)?nèi)容(包括除數(shù)字和空格以外的字符)
    pattern = r'(([^)]+))'
    line = re.sub(pattern, r'\1', line)
    # 確保每行只有一個(gè) =>
    if '=>' not in line:
        # 在頁(yè)碼數(shù)字前添加 =>(只在行尾)
        line = re.sub(r'(\d+)$', r'=>\1', line)
    # 去除中文漢字和'=>整體符號(hào)左邊的冗余符號(hào)
    pattern = r'([\u4e00-\u9fff]+)[^\w\s]+=>'
    line = re.sub(pattern, r'\1=>', line)
    modified_lines.append(line)
# 將修改后的內(nèi)容寫(xiě)回文件
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 模塊來(lái)實(shí)現(xiàn)對(duì)文件名的批量修改,結(jié)合字符串操作來(lái)確保文件名中的規(guī)定格式。以下是一個(gè)示例代碼:

import os

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

# 獲取目錄下所有文件名
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.通過(guò) os.path.join 構(gòu)建完整的文件路徑,確保路徑的正確性。
3.檢查文件是否是圖片文件(以 .png, .jpg, .jpeg, .gif 結(jié)尾的文件),并且文件名中包含下劃線。
4.使用 split('_') 分割文件名,確保分割后的第一部分為'00159231127'
5.構(gòu)建新文件名,并使用 os.rename 來(lái)重命名文件。

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

3. 檢測(cè)同級(jí)目錄下是否存在同名文件夾

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

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

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)建一個(gè)空字典,用于存儲(chǔ)前5位相同的文件夾名
same_prefix_folders = {}

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

    # 檢查前5位文件夾名是否已經(jīng)在字典中
    if prefix in same_prefix_folders:
        # 將文件夾名添加到對(duì)應(yīng)的鍵值中
        same_prefix_folders[prefix].append(folder)
    else:
        # 若字典中沒(méi)有該前5位文件夾名,則創(chuàng)建鍵值對(duì)
        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 位名稱,并將具有相同前綴的文件夾放入一個(gè)字典中。

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    python騰訊語(yǔ)音合成實(shí)現(xiàn)過(guò)程解析

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

    Python Django模型詳解

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

    Python自動(dòng)化測(cè)試selenium指定截圖文件名的方法

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

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

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

最新評(píng)論