国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
10分鐘內教你用Python實現(xiàn)多個文件自動上傳到百度云

一、環(huán)境說明

Python 3.7  和 win10系統(tǒng)

 

二、準備工作

首先我們需要安裝一個包,在cmd命令行界面安裝 bypy包。

pip install bypy

然后安裝成功后,在命令行運行命令

bypy info

會彈出一些類似一下的界面,要求授權系統(tǒng)認證。不過因為我已經(jīng)安裝了,所以下面是顯示我的網(wǎng)盤容量和現(xiàn)有量。具體的認證是在瀏覽器中輸入命令行界面中的一行百度云鏈接,進入授權界面,復制授權碼,重新回到命令行輸入授權碼。重新輸入bypy info 就可以認證成功了。

登錄百度網(wǎng)盤,就可以看到出現(xiàn)了下列的文件夾。由于API限制,所有文件只能存在該文件夾中。

 

三、代碼部分

該bypy包快速上手只要三步:創(chuàng)建對象;創(chuàng)建文件夾,上傳文件。

  1. # 獲取一個bypy對象,封裝了所有百度云文件操作的方法
  2. bp = ByPy()
  3. # 百度網(wǎng)盤創(chuàng)建遠程文件夾
  4. bp.mkdir(remotepath = 'dir_name')
  5. # 上傳某一文件到百度云網(wǎng)盤對應的遠程文件夾
  6. # ondup中參數(shù)代表復制文件,默認值為'overwrite',指定'newcopy'不會覆蓋重復文件
  7. bp.upload(localpath= file["fileName"], remotepath= 'dir_name', ondup='newcopy')

利用這些性質,我寫了一份代碼,功能是將代碼所在的上層文件夾以內的所有文件按原來的文件夾組織形式上傳到百度云中。也就是說,如果你要上傳一個文件夾內的所有文件,那么你可以把這份代碼拷貝到文件夾里面,然后直接運行就會自動上傳了。

代碼如下:

  1. from bypy import ByPy
  2. import os
  3. import time
  4. import datetime
  5. import threading
  6. # 百度云存放文件的文件夾名
  7. dir_name = "ByPy-test"
  8. # 獲取一個bypy對象,封裝了所有百度云文件操作的方法
  9. bp = ByPy()
  10. # 百度網(wǎng)盤創(chuàng)建遠程文件夾bypy-test
  11. bp.mkdir(remotepath = dir_name)
  12. # 函數(shù)作用:文件中的 \ 改為 /
  13. # 函數(shù)輸入:文件絕對路徑
  14. # 輸出:文件絕對路徑添加轉義符后的結果
  15. def changePath(filePath):
  16. path = ""
  17. for i in range(len(filePath)):
  18. if filePath[i] != "\\":
  19. path += filePath[i]
  20. else:
  21. path += "/"
  22. return path
  23. # 根據(jù)當前路徑和文件夾路徑得到相對路徑
  24. def relPath(filePath, topDir):
  25. relativepath = ""
  26. for i in range(len(filePath)):
  27. if i < len(topDir) and filePath[i] == topDir[i]:
  28. continue
  29. relativepath += filePath[i]
  30. #print ("相對路徑" + relativepath)
  31. return relativepath
  32. # 函數(shù)作用:給出文件夾,得到所有文件的絕對路徑
  33. # 輸入?yún)?shù):當前文件夾的絕對路徑
  34. # 返回值:一個包含所有文件絕對路徑,以及文件所在文件夾的大小的列表
  35. def getFileList(file_dir):
  36. fileList = []
  37. top_dir = ""
  38. checkFlag = False
  39. for root, dirs, files in os.walk(file_dir):
  40. #print(root) #當前目錄路徑
  41. if checkFlag == False:
  42. top_dir = root
  43. checkFlag = True
  44. #print(dirs) #當前路徑下所有子目錄
  45. #print(files) #當前路徑下所有非目錄子文件
  46. for file in files:
  47. fileDict = dict(Path = changePath(relPath(root, top_dir)), fileName = file, createFlag = False)
  48. fileList.append(fileDict) # 當前目錄+文件名
  49. #print(fileDict)
  50. return fileList
  51. #獲取文件的大小,結果保留兩位小數(shù),單位為MB
  52. def get_FileSize(filePath):
  53. fsize = os.path.getsize(filePath)
  54. fsize = fsize/float(1024*1024)
  55. return round(fsize,2)
  56. # 獲取文件絕對路徑列表
  57. allFiles = getFileList(os.path.abspath('.'))
  58. totalFileSize = 0 # 文件大小變量
  59. start = datetime.datetime.now() # 計時開始
  60. # 逐個上傳
  61. createFlag = {}
  62. for file in allFiles:
  63. #bp.upload(localpath=file, remotepath=dir_name, ondup='newcopy')
  64. print("正在上傳文件:" + file["fileName"])
  65. if file["Path"] != "":
  66. bp.mkdir(remotepath = dir_name + file["Path"])
  67. DIR_NAME = dir_name + file["Path"]
  68. bp.upload(localpath= "." + file["Path"]+ "/" +file["fileName"], remotepath = str(DIR_NAME), ondup='newcopy')
  69. print ("文件發(fā)送完成:本地路徑:" + file["Path"]+"/" +file["fileName"] + " 遠程文件夾:" + DIR_NAME)
  70. totalFileSize += get_FileSize( "." + file["Path"]+ "/" +file["fileName"])
  71. else:
  72. bp.upload(localpath= file["fileName"], remotepath= dir_name, ondup='newcopy')
  73. print ("文件發(fā)送完成:" + file["fileName"] + " 遠程文件夾:" + dir_name)
  74. totalFileSize += get_FileSize( "." + file["Path"]+ "/" +file["fileName"])
  75. print ("------------------------------------")
  76. end = datetime.datetime.now() # 計時結束
  77. print("上傳文件總大小為" + str(totalFileSize) + "MB")
  78. print("花費時間(s):" + str((end - start).seconds))
  79. print("\nupload ok")

 

傳輸速度還是可以的!

 

四、優(yōu)化

1. 或許可以考慮一下多線程,或者多進程發(fā)送,在文件較大較多的時候,傳輸時間會少挺多的。

2. 可以統(tǒng)計文件的修改時間,按時間段來發(fā)送文件,達到局部更新的效果。

 

五、最后

emmm至于你說為啥放著客戶端不用,寫個鬼命令行,(⊙﹏⊙)好像也有道理哦,不過寫著玩唄。寫程序多好玩。

thx for reading.

 

 

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C# 文件上傳類
用Python遍歷目錄
Python自動化整理文件“大升級”,任意路徑下文件,都給你整理的明明白白!
QT讀取文件夾下的特定文件_qt打開文件夾路徑并讀取文件
Java創(chuàng)建、重命名、刪除文件和文件夾
Python合并同一個文件夾下所有PDF文件的方法
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服