python os模組 練習題

2021-07-23 15:52:51 字數 2109 閱讀 4430

python的

os模組封裝了作業系統的目錄和檔案操作,要注意這些函式有的在os模組中,有的在os.path模組中。

1. 利用os模組編寫乙個能實現dir -l輸出的程式。

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import os

import time

import re

dirpath=r'd:\exercises\python'

listfile(dirpath)

findfile(dirpath,'.py')

def listfile(path):

print('許可權\t檔案數\t使用者名稱\t群組名\t大小\t月份\t日期\t時間\t檔名')

for x in os.listdir(path):

dir=os.path.join(path,x)

st=os.stat(dir)

print(oct(st.st_mode)[-3:],end='\t')

print(numoffiles(dir),end='\t')

print(st.st_uid,end='\t')

print(st.st_gid,end='\t')

print(st.st_size,end='\t')

lc_time=time.localtime(st.st_mtime)

print(time.strftime('%b',lc_time),end='\t')

print(lc_time.tm_mday,end='\t')

print(time.strftime('%h:%m',lc_time),end='\t')

print(x)

#計算資料夾數,最小為1

def numoffiles(path,num=1):

try:

for x in os.listdir(path):

dir=os.path.join(path,x)

if os.path.isdir(dir):

num+=1

num=numoffiles(dir,num)

except baseexception as e:

pass

finally:

return num

2. 編寫乙個程式,能在當前目錄以及當前目錄的所有子目錄下查詢檔案名包含指定字串的檔案,並列印出相對路徑。
#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import os

keyword = input('input keyword: ')

up = '.'

result =

def check(up, keyword):

all = os.listdir(up)

for x in all:

try:

abs_x = os.path.join(up, x)

if os.path.isdir(abs_x):

up = os.path.join(up, x)

check(up, keyword)

up = os.path.split(up)[0]

if os.path.isfile(abs_x):

if keyword in x:

except:

continue

check(up, keyword)

print('\n**********find %d files**********\n' % len(result))

num = 0

for r in result:

num += 1

print('%d %s' % (num, r))

print('\n***************end***************\n')

os.system("pause")

python os模組練習題

1 獲取某個檔案所在目錄的上一級目錄。例如 d python projects test19.py 目錄的結果 d python projects 方法1 path os.path.dirname r d python projects test19.py base name os.path.dir...

Python datetime模組練習題

import datetime print today 2020年第天,今年 的時間已過去,我要好好努力學習!year days 365 today datetime.datetime.now date str 年月日 format year today.year,month today.month...

python書中練習題 python練習題

1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...