1. 程式人生 > >6.3Pytyhon文件的操作(三)

6.3Pytyhon文件的操作(三)

getc while rip odi 清單 print image 是否 思路

目錄

  • 目錄
  • 前言
  • (一)文件的創建
  • (二)文件的刪除
  • (三)文件的重命名
  • (四)文件的查看
  • (五)文件的復制
    • ==1.小文件的復制==
    • ==2.大文件的復制==
  • (六)文件的實戰案例
    • ==1.文件的分類==
    • ==2.文件的清單查看==

目錄

前言

這是相續上兩篇6.1Python文件的操作(一)6.2Python 文件的操作的第三篇文章。

也是Python文件操作的最後一篇文章。

(一)文件的創建

(1)說明:

需要導入的是os模塊,mkdir()方法

(2)源代碼:

# 導入模塊
import os
# 創建一級目錄:創建test文件夾
os.mkdir("test")

(3)輸出效果:

技術分享圖片

(二)文件的刪除

(1)說明:

os.remove() 刪除具體文件

os.rmdir() 只能刪除空的文件夾

os.removedirs () 遞歸的刪除,先刪除了裏面的文件夾,後刪除外面的文件夾

(2)源代碼:

import os

# 刪除文件 os.remove("文件路徑")
os.remove("aa.txt")

# 刪除空的文件夾
os.rmdir("Demo")
# 僅僅刪除one1文件夾
os.rmdir("test/one1")

# 同時刪除one文件夾和one下的one2文件夾
os.removedirs("one/one2")

(3)輸出效果:

aa.txt 文件被刪除

Demo 文件夾被刪除

test裏的ones1被刪除

one文件夾與其下的ones2文件夾被刪除

(三)文件的重命名

(1)說明:

os.rename() 既可以重命名文件,又可以重命名文件夾

os.rename() 同時給文件夾和文件夾下的文件重命名

(2)源代碼:

import os

# 將a.txt重命名為aa.txt
os.rename("a.txt", "aa.txt")

# 將test目錄重命名為Demo
os.rename('test', "Demo")

# 同時修改目錄和目錄下的文件的名稱
one/01.txt -> two/02.txt
os.renames("one/01.txt", "two/02.txt")

(3)輸出效果:

文件a.txt 變成 aa.txt

文件夾text 變為Demo

文件夾one與01.txt 變成 two 與 02.txt

(四)文件的查看

(1)說明:

os.getcwd() 獲取當前的文件路徑

os.listdir() 獲取當前文件的目錄,也可以指定哪個文件

os.chdir() 切換文件目錄

(2)源代碼:

import os

# 獲取當前的文件路徑
result = os.getcwd()
print(result)
# 獲取當前文件的目錄,也可以指定
content = os.listdir()
print(content)

# 切換文件目錄
os.chdir("two")

# 再次輸出文件路徑
result = os.getcwd()
print(result)
# 再次獲取文件的目錄
content = os.listdir()
print(content)

(3)輸出效果:

技術分享圖片

(五)文件的復制

==1.小文件的復制==

(1)說明:

思路:從一個文件讀取出來,再寫到另一個文件。

(2)源代碼:

"""
    小文件復制,一次性讀,一次性寫,占用內存小的
"""
# 打開文件
source_file = open("read.txt", "r", encoding="utf-8")
new_file = open("writer.txt", "w", encoding="utf-8")

# 操作文件
content = source_file.read()
new_file.write(content)

# 關閉文件
source_file.close()
new_file.close()

(3)輸出效果:

技術分享圖片

==2.大文件的復制==

(1)說明:

考慮到在讀寫的時候加載到內存的空間有限,在復制大文件的時候,不可能一次性寫完。

思路:先取一部分內容,寫進去,再循環的寫,直到寫完。

(2)源代碼:

"""
    大文件復制,循環來讀取,每一次來讀指定的字節。
"""
# 打開文件
source_file = open("read.csv", "r", encoding="utf-8")
new_file = open("writer.txt", "w", encoding="utf-8")

# 操作文件

while True:
    # 2.1 每一次讀取1024字節
    content = source_file.read(1024)
    if content == "":
        break
    new_file.write(content)

# 關閉文件
source_file.close()
new_file.close()

(3)輸出效果:

技術分享圖片

(六)文件的實戰案例

==1.文件的分類==

(1)說明:

現在有一個需求:再一個文件夾下,又許多雜亂的文件,小張就想給它整理分類一下;

shutil.move(olddir,newdir) 移動文件

整理前的文件

技術分享圖片

(2)源代碼:

"""
    把文件分類,並且分類後放在指定的文件夾
"""
import os
# 移動文件所有的庫
import shutil

# 1.遍歷所有的文件(文件名稱)
# 1.1獲取文件
file_list = os.listdir("files")
# print(file_list)

# 切換路徑
os.chdir("files")

# 2.分解文件的路徑
for file_name in file_list:
    # 判斷是否是C文件
    if ".c" in file_name:
        if not os.path.exists("C_source"):
            os.mkdir("C_source")
        shutil.move(file_name, "C_source")
        
    # 判斷是否是txt文件
    elif ".txt" in file_name:
        if not os.path.exists("txt文件"):
            os.mkdir("txt文件")
        shutil.move(file_name, "txt文件")
        
    # 判斷是否是jpg文件
    elif ".jpg" in file_name:
        if not os.path.exists("jpg圖片文件"):
            os.mkdir("jpg圖片文件")
        shutil.move(file_name, "jpg圖片文件")

(3)輸出效果:

技術分享圖片

==2.文件的清單查看==

(1)說明:

現在小張想看整理好後的文件,具體有哪些文件,看一看他的詳細分布。

(2)源代碼:

import os

# os.chdir("files")

# file_list = os.listdir()
# print(file_list)


# 利用遞歸來實現
def list_file(dir):
    # 獲取當前列表清單
    file_list = os.listdir(dir)

    # 遍歷當前目錄
    for file_name in file_list:
        # 加上相對路徑
        new_file = dir + "/" + file_name
        # 判斷是否是文件夾
        if os.path.isdir(new_file):
            print(file_name)
            # 是文件夾,遞歸調用函數
            list_file(new_file)
        # 不是文件夾,直接輸出
        else:
            print("\t" + file_name)
    # 添加換行
    print("")


list_file("files")

(3)輸出效果:

技術分享圖片

(4)附加功能:

也可以把輸出的內容寫到txt文件。

源代碼:

import os


# 利用遞歸來實現
def list_file(dir, file):
    # 獲取當前列表清單
    file_list = os.listdir(dir)

    # 遍歷當前目錄
    for file_name in file_list:
        # 加上相對路徑
        new_file = dir + "/" + file_name
        # 判斷是否是文件夾
        if os.path.isdir(new_file):
            file.write(new_file + "\n")
            # 是文件夾,遞歸調用函數
            list_file(new_file, file)
        # 不是文件夾,直接輸出
        else:
            file.write("\t" + file_name + "\n")
    # 添加換行
    file.write("\n")


files = input("請輸入要查看的文件:")
file_txt = input("請輸入要寫到的txt文件名稱:")
file = open(file_txt + ".txt", "a", encoding="utf-8")
list_file(files, file)

輸出效果:

技術分享圖片

作者:Mark

日期:2019/02/10 周日

6.3Pytyhon文件的操作(三)