python編寫shell腳本


模塊

  os模塊和shutil模塊主要用於在python中執行一些Linux相關的操作,其中 os.system(command) 可以直接運行Linux命令,如os.system('ls')。

不過,通常這條命令不需要用到。因為shell常用的那些命令在python中通常有對應而且同樣簡潔的寫法。上述命令可用 os.listdir(”/”) 代替

 

import os
import shutil

# ls --> listdir
os.listdir(”/”)

# cp --> copy | copy2 | copytree
shutil.copy(src,dest) # 參數src是指源文件的名字,參數dest則是目標文件或者目標目錄的名字。 如果dest是一個目錄名,就會在那個目錄下創建一個相同名字的文件
shutil.copy2(src,dest) # 同上,不過copy2還會復制最后存取時間和最后更新時間
shutil.copytree(src,dst[,symlinks]) # src,dst同上,symlinks是一個布爾值,如果是True的話就創建符號鏈接,用於復制目錄

# mv --> move
shutil.move(src,dst) # 移動文件

# cd --> chdir
os.chdir(dirname) # dirname為指定目錄

# pwd --> getcwd
os.getcwd() # 得到當前環境變量

# chroot --> chroot
os.chroot(dirname) # 將dirname作為進程的根目錄

# remove --> remove,remove -r --> rmdir
os.remove(path) # 刪除文件,不能用於刪除目錄
os.rmdir(path) # 刪除文件夾

# 更改權限
os.chmod(path,mode)
'''
更改path的權限位。mode可以是以下值(使用or連接)的組合:
R代表讀,W代表寫,X代表執行權限。USR 代表用戶,GRP代表組,OTH代表其它
os.S_ISUID
os.S_ISGID
os.S_ENFMT
os.S_ISVTX
os.S_IREAD
os.S_IWRITE
os.S_IEXEC
os.S_IRWXU
os.S_IRUSR
os.S_IWUSR
os.S_IXUSR
os.S_IRWXG
os.S_IRGRP
os.S_IWGRP
os.S_IXGRP
os.S_IRWXO
os.S_IROTH
os.S_IWOTH
os.S_IXOTH
'''

# mkdir
os.mkdir(path,[mode]) # 創建目錄。mode的意義參見os.chmod(),默認是0777
os.makedirs(path,[mode]) # 同上,不過會先創建不存在的父目錄。
常用命令
import os

# 常用
os.path.join(dirname,basename) # 將目錄名和文件名組合成一個完整的路徑名,比如:os.path.join(”/foo”,”bar.dat”)會返回”/foo/bar.dat”。
os.path.split(path) # 得到(目錄,文件名),比如:os.path.split(”/foo /bar.dat”)會返回(”/foo”,”bar.dat”)

os.path.splitext(path) # 把path分離成基本名和擴展名。比如:os.path.splitext(”/foo /bar.tar.bz2″)返回(’/foo/bar.tar’, ‘.bz2′)

os.path.exists(path) # 判斷文件或者目錄是否存在

os.path.isfile() # 判斷path所指向的是否是一個普通文件,而不是目錄
os.path.isdir(path) # 判斷path所指向的是否是一個目錄,而不是普通文件

# 其他
os.path.islink(path) # 判斷path所指向的是否是一個符號鏈接
os.path.ismount(path) # 判斷path所指向的是否是一個掛接點(mount point)
os.path.getatime(path) # 返回path所指向的文件或者目錄的最后存取時間。
os.path.getmtime(path) # 返回path所指向的文件或者目錄的最后修改時間
os.path.getctime(path) # 返回path所指向的文件的創建時間
os.path.getsize(path) # 返回path所指向的文件的大小
os.path.abspath(path) # 把path轉成絕對路徑
os.path.expanduser(path) # 把path中包含的”~”和”~user”轉換成用戶目錄
os.path.expandvars(path) # 根據環境變量的值替換path中包含的”$name”和”${name}”,比如環境變量 FISH=nothing,那os.path.expandvars(”$FISH/abc”)會返回”nothing/abc”
os.path.normpath(path) # 去掉path中包含的”.”和”..”
os.path

 

import os

os.chown(path,uid,gid) # 改變文件的屬主。uid和gid為-1的時候不改變原來的屬主。
os.link(src,dst) # 創建硬連接
os.readlink(path) # 得到path這個符號鏈接所指向的路徑
os.symlink(src,dst) # 創建符號鏈接
其他

 

練習

sys.argv是一個列表,保存了python程序的命令行參數。其中 sys.argv[0]是程序本身的名字。

import sys,os.path,shutil

for f in os.listdir(sys.argv[1]):
  shutil.copy(os.path.join(sys.argv[1],f),sys.argv[2])
復制指定文件夾下的所有文件夾及文件
import os.path,sys

dirname=sys.argv[1]
i=10001
for f in os.listdir(dirname):
  src=os.path.join(dirname,f)
  if os.path.isdir(src):
    continue
  os.rename(src,str(i))
  i +=1

 
把一個文件夾下的所有文件重命名成 10001~10999

 

 

 

 

參考:https://www.cnblogs.com/momoyan/p/9145742.html

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM