亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

PYTHON操作文件文檔

原創(chuàng) 2016-11-07 15:18:05 429
摘要:需要幫老師將44G的圖書(shū)分類(lèi)一下,人工當(dāng)然累死了。所以用Python大法處理一下。思路是讀取文件目錄下的書(shū)名,然后去百度百科查分類(lèi),如果還沒(méi)有就去豆瓣,當(dāng)當(dāng)查。哪一個(gè)先找到其余的就不用找了。如果沒(méi)有找到先不進(jìn)行一下處理,當(dāng)找到分類(lèi)以后就開(kāi)始將文件加入制定文件夾下的分類(lèi)(如果沒(méi)有分類(lèi)文件夾則自動(dòng)創(chuàng)建)。當(dāng)所有可以通過(guò)網(wǎng)絡(luò)分類(lèi)的書(shū)進(jìn)行分類(lèi)之后,剩余的書(shū)就通過(guò)劃分關(guān)鍵字進(jìn)行下一次的分類(lèi)。目前先附上需要查

需要幫老師將44G的圖書(shū)分類(lèi)一下,人工當(dāng)然累死了。所以用Python大法處理一下。

思路是讀取文件目錄下的書(shū)名,然后去百度百科查分類(lèi),如果還沒(méi)有就去豆瓣,當(dāng)當(dāng)查。哪一個(gè)先找到其余的就不用找了。如果沒(méi)有找到先不進(jìn)行一下處理

,當(dāng)找到分類(lèi)以后就開(kāi)始將文件加入制定文件夾下的分類(lèi)(如果沒(méi)有分類(lèi)文件夾則自動(dòng)創(chuàng)建)。當(dāng)所有可以通過(guò)網(wǎng)絡(luò)分類(lèi)的書(shū)進(jìn)行分類(lèi)之后,剩余的書(shū)就通過(guò)劃分關(guān)鍵字進(jìn)行下一次的分類(lèi)。目前先附上需要查詢(xún)的資料。等44G在服務(wù)器上解壓完畢,處理成功之后上代碼。

os.listdir(os.getcwd()) # 查看當(dāng)前目錄下的所有文件和文件夾
shutil.move("/home/xpower/WorkSpace/Jack/123","/home/xpower/Jack") #將前面的文件復(fù)制到后面的文件夾
# os 模塊

os.sep 可以取代操作系統(tǒng)特定的路徑分隔符。windows下為 '\\'
os.name 字符串指示你正在使用的平臺(tái)。比如對(duì)于Windows,它是'nt',而對(duì)于Linux/Unix用戶(hù),它是 'posix'
os.getcwd() 函數(shù)得到當(dāng)前工作目錄,即當(dāng)前Python腳本工作的目錄路徑
os.getenv() 獲取一個(gè)環(huán)境變量,如果沒(méi)有返回none
os.putenv(key, value) 設(shè)置一個(gè)環(huán)境變量值
os.listdir(path) 返回指定目錄下的所有文件和目錄名
os.remove(path) 函數(shù)用來(lái)刪除一個(gè)文件
os.system(command) 函數(shù)用來(lái)運(yùn)行shell命令
os.linesep 字符串給出當(dāng)前平臺(tái)使用的行終止符。例如,Windows使用 '\r\n',Linux使用 '\n' 而Mac使用 '\r'
os.path.split(path)  函數(shù)返回一個(gè)路徑的目錄名和文件名
os.path.isfile() 和os.path.isdir()函數(shù)分別檢驗(yàn)給出的路徑是一個(gè)文件還是目錄
os.path.exists() 函數(shù)用來(lái)檢驗(yàn)給出的路徑是否真地存在
os.curdir  返回當(dāng)前目錄 ('.')
os.mkdir(path) 創(chuàng)建一個(gè)目錄
os.makedirs(path) 遞歸的創(chuàng)建目錄
os.chdir(dirname) 改變工作目錄到dirname    
os.path.getsize(name) 獲得文件大小,如果name是目錄返回0L
os.path.abspath(name) 獲得絕對(duì)路徑
os.path.normpath(path) 規(guī)范path字符串形式
os.path.splitext()  分離文件名與擴(kuò)展名
os.path.join(path,name) 連接目錄與文件名或目錄
os.path.basename(path) 返回文件名
os.path.dirname(path) 返回文件路徑
os.walk(top,topdown=True,onerror=None)  遍歷迭代目錄
os.rename(src, dst)  重命名file或者directory src到dst 如果dst是一個(gè)存在的directory, 將拋出OSError. 在Unix, 如果dst在存且是一個(gè)file, 如果用戶(hù)有權(quán)限的話(huà),它將被安靜的替換. 操作將會(huì)失敗在某些Unix 中如果src和dst在不同的文件系統(tǒng)中. 如果成功, 這命名操作將會(huì)是一個(gè)原子操作 (這是POSIX 需要). 在 Windows上, 如果dst已經(jīng)存在, 將拋出OSError,即使它是一個(gè)文件. 在unix,Windows中有效。
os.renames(old, new) 遞歸重命名文件夾或者文件。像rename()

# shutil 模塊

shutil.copyfile( src, dst) 從源src復(fù)制到dst中去。當(dāng)然前提是目標(biāo)地址是具備可寫(xiě)權(quán)限。拋出的異常信息為IOException. 如果當(dāng)前的dst已存在的話(huà)就會(huì)被覆蓋掉
shutil.move( src, dst)  移動(dòng)文件或重命名
shutil.copymode( src, dst) 只是會(huì)復(fù)制其權(quán)限其他的東西是不會(huì)被復(fù)制的
shutil.copystat( src, dst) 復(fù)制權(quán)限、最后訪問(wèn)時(shí)間、最后修改時(shí)間
shutil.copy( src, dst)  復(fù)制一個(gè)文件到一個(gè)文件或一個(gè)目錄
shutil.copy2( src, dst)  在copy上的基礎(chǔ)上再?gòu)?fù)制文件最后訪問(wèn)時(shí)間與修改時(shí)間也復(fù)制過(guò)來(lái)了,類(lèi)似于cp –p的東西
shutil.copy2( src, dst)  如果兩個(gè)位置的文件系統(tǒng)是一樣的話(huà)相當(dāng)于是rename操作,只是改名;如果是不在相同的文件系統(tǒng)的話(huà)就是做move操作
shutil.copytree( olddir, newdir, True/Flase)
把olddir拷貝一份newdir,如果第3個(gè)參數(shù)是True,則復(fù)制目錄時(shí)將保持文件夾下的符號(hào)連接,如果第3個(gè)參數(shù)是False,則將在復(fù)制的目錄下生成物理副本來(lái)替代符號(hào)連接
shutil.rmtree( src ) 遞歸刪除一個(gè)目錄以及目錄內(nèi)的所有內(nèi)容




先要裝載 os模塊:

import os

 

print os.getcwd()

或者

print os.path.abspath(os.curdir)

print os.path.abspath('.')

就可以了。

(  . 代表當(dāng)前的路徑,.. 代表當(dāng)前路徑的上一級(jí)路徑。這在UNIX和Windows系統(tǒng)意義是類(lèi)似的。

例如:

以Winodws系統(tǒng)為例:

當(dāng)前路徑是F:\Temp, 則 . 的絕對(duì)路徑就是F:\Temp

.. 的絕對(duì)路徑就是F:\

)

要獲得上級(jí)目錄的路徑也很簡(jiǎn)單,print os.path.abspath('..')就可以了。

要改變當(dāng)前路徑,os.chdir(path) 就可以了 path里填要改變到的目錄,例如os.chdir('D:\Program Files')

這樣大部分的文件操作現(xiàn)在是相對(duì)于D:\Program Files 來(lái)了,例如fobj = open('Hello.txt'),實(shí)際會(huì)打開(kāi)D:\Program Files\Hello.txt文件。
 不要通過(guò)sys.argv[0]獲得當(dāng)前路徑,那是不正確的。sys.argv[0] 是當(dāng)前執(zhí)行的Python腳本的文件名,不一定是當(dāng)前的路徑。
希望對(duì)你有所幫助。
python中對(duì)文件、文件夾的操作需要涉及到os模塊和shutil模塊。
創(chuàng)建文件:
1) os.mknod("test.txt") 創(chuàng)建空文件
2) open("test.txt",w)           直接打開(kāi)一個(gè)文件,如果文件不存在則創(chuàng)建文件

創(chuàng)建目錄:
os.mkdir("file")                   創(chuàng)建目錄

創(chuàng)建多層新目錄:
### 創(chuàng)建多層目錄
def mkdirs(path): 
    # 去除首位空格
    path=path.strip()
    # 去除尾部 \ 符號(hào)
    path=path.rstrip("\\")
 
    # 判斷路徑是否存在
    # 存在     True
    # 不存在   False
    isExists=os.path.exists(path)
 
    # 判斷結(jié)果
    if not isExists:
        # 創(chuàng)建目錄操作函數(shù)
        os.makedirs(path)
        # 如果不存在則創(chuàng)建目錄
        print path + u' 創(chuàng)建成功'
        return True
    else:
        # 如果目錄存在則不創(chuàng)建,并提示目錄已存在
        print path + u' 目錄已存在'
        return False

復(fù)制文件:
shutil.copyfile("oldfile","newfile")       oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile")            oldfile只能是文件夾,newfile可以是文件,也可以是目標(biāo)目錄

復(fù)制文件夾:
shutil.copytree("olddir","newdir")        olddir和newdir都只能是目錄,且newdir必須不存在

重命名文件(目錄)
os.rename("oldname","newname")       文件或目錄都是使用這條命令

移動(dòng)文件(目錄)
shutil.move("oldpos","newpos")    

刪除文件
os.remove("file")

刪除目錄
os.rmdir("dir") 只能刪除空目錄
shutil.rmtree("dir")    空目錄、有內(nèi)容的目錄都可以刪 

轉(zhuǎn)換目錄
os.chdir("path")    換路徑

判斷目標(biāo)
os.path.exists("goal")    判斷目標(biāo)是否存在
os.path.isdir("goal")     判斷目標(biāo)是否目錄
os.path.isfile("goal")    判斷目標(biāo)是否文件  
備注:若路徑中含中文,在windows環(huán)境(編碼為GBK)下,要將目錄編碼成GBK,如:dir.encode('GBK')

os.path模塊主要用于文件的屬性獲取,在編程中經(jīng)常用到,以下是該模塊的幾種常用方法。更多的方法可以去查看官方文檔:http://docs.python.org/library/os.path.html

1.os.path.abspath(path)
返回path規(guī)范化的絕對(duì)路徑。
 
>>> os.path.abspath('test.csv')
'C:\\Python25\\test.csv'
 
>>> os.path.abspath('c:\\test.csv')
'c:\\test.csv'
 
>>> os.path.abspath('../csv\\test.csv')
'C:\\csv\\test.csv'
 
2.os.path.split(path)
將path分割成目錄和文件名二元組返回。
 
>>> os.path.split('c:\\csv\\test.csv')
('c:\\csv', 'test.csv')
>>> os.path.split('c:\\csv\\')
('c:\\csv', '')
 
3.os.path.dirname(path)
返回path的目錄。其實(shí)就是os.path.split(path)的第一個(gè)元素。
 
>>> os.path.dirname('c:\\csv\test.csv')
'c:\\'
>>> os.path.dirname('c:\\csv')
'c:\\'
 
4.os.path.basename(path)
返回path最后的文件名。如何path以/或\結(jié)尾,那么就會(huì)返回空值。即os.path.split(path)的第二個(gè)元素。
 
>>> os.path.basename('c:\\test.csv')
'test.csv'
>>> os.path.basename('c:\\csv')
'csv' (這里csv被當(dāng)作文件名處理了)
>>> os.path.basename('c:\\csv\\')
''
 
5.os.path.commonprefix(list)
返回list中,所有path共有的最長(zhǎng)的路徑。
 
如:
>>> os.path.commonprefix(['/home/td','/home/td/ff','/home/td/fff'])
'/home/td'
 
6.os.path.exists(path)
如果path存在,返回True;如果path不存在,返回False。
 
>>> os.path.exists('c:\\')
True
>>> os.path.exists('c:\\csv\\test.csv')
False
 
7.os.path.isabs(path)
如果path是絕對(duì)路徑,返回True。
 
8.os.path.isfile(path)
如果path是一個(gè)存在的文件,返回True。否則返回False。
 
>>> os.path.isfile('c:\\boot.ini')
True
>>> os.path.isfile('c:\\csv\\test.csv')
False
>>> os.path.isfile('c:\\csv\\')
False
 
9.os.path.isdir(path)
如果path是一個(gè)存在的目錄,則返回True。否則返回False。
 
>>> os.path.isdir('c:\\')
True
>>> os.path.isdir('c:\\csv\\')
False
>>> os.path.isdir('c:\\windows\\test.csv')
False
 
10.os.path.join(path1[, path2[, ...]])
將多個(gè)路徑組合后返回,第一個(gè)絕對(duì)路徑之前的參數(shù)將被忽略。
 
>>> os.path.join('c:\\', 'csv', 'test.csv')
'c:\\csv\\test.csv'
>>> os.path.join('windows\temp', 'c:\\', 'csv', 'test.csv')
'c:\\csv\\test.csv'
>>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c')
'/home/aa/bb/c'
 
11.os.path.normcase(path)
在Linux和Mac平臺(tái)上,該函數(shù)會(huì)原樣返回path,在windows平臺(tái)上會(huì)將路徑中所有字符轉(zhuǎn)換為小寫(xiě),并將所有斜杠轉(zhuǎn)換為飯斜杠。
 
>>> os.path.normcase('c:/windows\\system32\\')
'c:\\windows\\system32\\'
 
12.os.path.normpath(path)
規(guī)范化路徑。
 
>>> os.path.normpath('c://windows\\System32\\../Temp/')
'c:\\windows\\Temp'
 
12.os.path.splitdrive(path)
返回(drivername,fpath)元組
 
>>> os.path.splitdrive('c:\\windows')
('c:', '\\windows')
 
13.os.path.splitext(path)
分離文件名與擴(kuò)展名;默認(rèn)返回(fname,fextension)元組,可做分片操作
 
>>> os.path.splitext('c:\\csv\\test.csv')
('c:\\csv\\test', '.csv')
 
14.os.path.getsize(path)
返回path的文件的大?。ㄗ止?jié))。
 
>>> os.path.getsize('c:\\boot.ini')
299L
 
15.os.path.getatime(path)
返回path所指向的文件或者目錄的最后存取時(shí)間。
 
16.os.path.getmtime(path)
返回path所指向的文件或者目錄的最后修改時(shí)間
復(fù)制代碼


發(fā)布手記

熱門(mén)詞條