Python自動移動電驢下載完成的檔案(未完)

來源:互聯網
上載者:User

今天整Google App Engine整了一天,用gappproxy翻牆,呵呵。時隔一年再動gae覺得爽了很多,官方工具也出了,不必再dos,手動修改yml檔案,還可以本地調試。
就是那個gapproxy好像不能處理加密頁面,比如facebook twitter google的登入等。一點就打不開網頁。這點很鬱悶。

切入正題:
由於上班的時候不怎麼用網,但這光纖頻寬不能浪費啊。於是就下美劇,學英語。電驢p2p協議的大家都知道,你既是下載者,也是資源提供者。
辦公室人多,即使下也是限速。就不想和別人多分享了,下完馬上移動檔案位置。

下午先寫了個檔案剪下的部分,遇到了一些字元編碼的問題,不知道有沒有什麼辦法能避免,代碼如下:
py所在檔案夾就是電驢的下載檔案夾。

 

代碼

#encoding=utf-8

import os,shutil
from os import path

files = os.listdir(os.getcwd())
for onefile in files:
if not path.isfile(onefile):
continue
name, stuffix = path.splitext(onefile)
if stuffix not in ('.part', '.met', '.py'):
try:
#檔案編碼為utf-8,所以得到的字串也是utf-8的,但本地系統編碼是gbk的
newName = 'D:\\veryCDOK\\老友記\\4第四季\\'
#先解碼成unicode
newName = newName.decode('utf-8')
#然後編碼成gbk的
newName = newName.encode('gbk')
#print type(newName)
#print type(onefile)
##print newName
##print onefile
shutil.move(path.abspath(onefile),newName)
except Exception, e:
print e

預留三個問題:
1.我發現python的move不是windows的剪下,而是先copy然後再delete的,這樣挺慢。看看明天能否調用windows的剪下功能。
2.準備做根據電影名字,自動建立檔案夾,或者歸類檔案。由於電影的名字裡的符號雜亂不已。所以就只能在建立下載任務的時候,規定一個命名格式,初步設想是:[[電影名字]]+原有的其他資訊+副檔名 這樣我就能提取電影名字,進行自動歸類。
3.關於本程式的執行,打算一直開著5min執行一次,或者建立個計劃任務,5min執行一次。具體編碼明日修改。

 

另外今天又複習了下os os.path和shutil的用法,以下是copy的:

os和os.path模組
os.sep 可以取代作業系統特定的路徑分割符。
os.name字串指示你正在使用的平台。比如對於Windows,它是'nt',而對於Linux/Unix使用者,它是'posix'。
os.getcwd()函數得到當前工作目錄,即當前Python指令碼工作的目錄路徑。
os.getenv()和os.putenv()函數分別用來讀取和設定環境變數。
os.listdir()返回指定目錄下的所有檔案和目錄名。
os.remove()函數用來刪除一個檔案。
os.system()函數用來運行shell命令。
os.linesep字串給出當前平台使用的行終止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
os.path.split()函數返回一個路徑的目錄名和檔案名稱。
os.path.isfile()和os.path.isdir()函數分別檢驗給出的路徑是一個檔案還是目錄。
os.path.existe()函數用來檢驗給出的路徑是否真地存在

os.listdir(dirname):列出dirname下的目錄和檔案
os.getcwd():獲得當前工作目錄
os.curdir:返回但前目錄('.')
os.chdir(dirname):改變工作目錄到dirname
os.path.isdir(name):判斷name是不是一個目錄,name不是目錄就返回false
os.path.isfile(name):判斷name是不是一個檔案,不存在name也返回false
os.path.exists(name):判斷是否存在檔案或目錄name
os.path.getsize(name):獲得檔案大小,如果name是目錄返回0L
os.path.abspath(name):獲得絕對路徑
os.path.normpath(path):規範path字串形式
os.path.split(name):分割檔案名稱與目錄(事實上,如果你完全使用目錄,它也會將最後一個目錄作為檔案名稱而分離,同時它不會判斷檔案或目錄是否存在)
os.path.splitext():分離檔案名稱與副檔名
os.path.join(path,name):串連目錄與檔案名稱或目錄
os.path.basename(path):返迴文件名
os.path.dirname(path):返迴文件路徑

shutil模組
copy(src, dst)
Copy data and mode bits ("cp src dst").
The destination may be a directory.

copy2(src, dst)
Copy data and all stat info ("cp -p src dst").
The destination may be a directory.

copyfile(src, dst)
Copy data from src to dst
copyfileobj(fsrc, fdst, length=16384)
copy data from file-like object fsrc to file-like object fdst

copymode(src, dst)
Copy mode bits from src to dst

copystat(src, dst)
Copy all stat info (mode bits, atime and mtime) from src to dst

copytree(src, dst, symlinks=False)
Recursively copy a directory tree using copy2().
The destination directory must not already exist.
If exception(s) occur, an Error is raised with a list of reasons.
If the optional symlinks flag is true, symbolic links in the
source tree result in symbolic links in the destination tree; if
it is false, the contents of the files pointed to by symbolic
links are copied.
XXX Consider this example code rather than the ultimate tool.

move(src, dst)
Recursively move a file or directory to another location.
If the destination is on our current filesystem, then simply use
rename. Otherwise, copy src to the dst and then remove src.
A lot more could be done here... A look at a mv.c shows a lot of
the issues this implementation glosses over.
rmtree(path, ignore_errors=False, onerror=None)
Recursively delete a directory tree.

If ignore_errors is set, errors are ignored; otherwise, if onerror
is set, it is called to handle the error with arguments (func,
path, exc_info) where func is os.listdir, os.remove, or os.rmdir;
path is the argument to that function that caused it to fail; and
exc_info is a tuple returned by sys.exc_info(). If ignore_errors
is false and onerror is None, an exception is raised.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.