最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

linux 下python多線程遞歸復(fù)制文件夾及文件夾中的文件

 更新時間:2020年01月02日 10:14:03   作者:Tdyh_NY  
這篇文章主要介紹了linux 下python多線程遞歸復(fù)制文件夾及文件夾中的文件,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下

本文是利用python 復(fù)制文件夾 剛開始寫了一個普通的遞歸復(fù)制文件夾    然后想了想 覺得對io頻繁的程序 threading 線程還比較友好  就寫了個多線程版本的  最惡心人的地方就是路徑  其他都還好吧 

import os
import threading
import multiprocessing
length_of_folder = 0
def copyfile(Path):
if os.path.isdir(Path):
  print("-----------%s" % ("Testfortherading_" + '/' + Path[length_of_folder:]))
  os.makedirs("Testforthreading_" + '/' + Path[length_of_folder:])
filenames = os.listdir(Path)
for filename in filenames:
  if os.path.isdir(Path + '/' + filename):
    #ps = "Testforthreading_" +"/" + Path[length_of_folder:]
    #print("%s" % (ps + '/' + filename))
    #os.mkdir(ps + '/' + filename)
    temp = Path + '/' + filename
    t = threading.Thread(target=copyfile , args=(temp,))
    t.start()
  else:
    f = open(Path + '/' + filename , 'rb')
    content = f.read()
    F = open('Testforthreading_' + '/' + Path[length_of_folder:]+ '/' + filename , 'wb')
    F.write(content)
    f.close()
    F.close()
def main():
""""""
foldername = input("Please input the folder you want to copy:")
length_of_folder = len(foldername)
if os.path.isdir("Testforthreading_"):
  os.removedirs("Testforthreading_")
os.mkdir("Testforthreading_")
copyfile(foldername)
#p = multiprocessing.Pool(10)
#que = multiprocessing.Manager().Queue()
if __name__ == "__main__":
main()

ps:Python多進(jìn)程遞歸復(fù)制文件夾中的文件

import multiprocessing
import os
import reimport time
# 源文件夾地址、目標(biāo)文件夾地址
SOUR_PATH = ""
DEST_PATH = ""
# 源文件列表 文件夾列表
SOUR_FILE_LIST = list()
SOUR_DIR_LIST = list()
def traverse(source_path):
  """遞歸遍歷源文件夾,獲取文件夾列表、文件列表
  :param source_path: 用戶指定的源路徑
  """
  if os.path.isdir(source_path):
    SOUR_DIR_LIST.append(source_path)
    for temp in os.listdir(source_path):
      new_source_path = os.path.join(source_path, temp)
      traverse(new_source_path)
  else:
    SOUR_FILE_LIST.append(source_path)
def copy_files(queue, sour_file, dest_file):
  """復(fù)制文件列表中的文件到指定文件夾
  :param queue: 隊列,用于監(jiān)測進(jìn)度
  :param sour_file:
  :param dest_file:
  """
  # time.sleep(0.1)
  try:
    old_f = open(sour_file, "rb")
    new_f = open(dest_file, "wb")
  except Exception as ret:
    print(ret)
  else:
    content = old_f.read()
    new_f.write(content)
    old_f.close()
    new_f.close()
  queue.put(sour_file)
def main():
  source_path = input("請輸入需要復(fù)制的文件夾的路徑:\n")
  SOUR_PATH = source_path
  DEST_PATH = SOUR_PATH + "[副本]"
  # dest_path = input("請輸入目標(biāo)文件夾路徑")
  # DEST_PATH = dest_path
  print(">>>源文件夾路徑:", SOUR_PATH)
  print(">目標(biāo)文件夾路徑:", DEST_PATH)
  print("開始計算文件...")
  queue = multiprocessing.Manager().Queue()
  po = multiprocessing.Pool(5)
  traverse(source_path)
  print("創(chuàng)建目標(biāo)文件夾...")
  for sour_dir in SOUR_DIR_LIST:
    dest_dir = sour_dir.replace(SOUR_PATH, DEST_PATH)
    try:
      os.mkdir(dest_dir)
    except Exception as ret:
      print(ret)
    else:
      print("\r目標(biāo)文件夾 %s 創(chuàng)建成功" % DEST_PATH, end="")
  print()
  print("開始復(fù)制文件")
  for sour_file in SOUR_FILE_LIST:
    dest_file = sour_file.replace(SOUR_PATH, DEST_PATH)
    po.apply_async(copy_files, args=(queue, sour_file, dest_file))
  count_file = len(SOUR_FILE_LIST)
  count = 0
  while True:
    q_sour_file = queue.get()
    if q_sour_file in SOUR_FILE_LIST:
      count += 1
    rate = count * 100 / count_file
    print("\r文件復(fù)制進(jìn)度: %.2f%% %s" % (rate, q_sour_file), end="")
    if rate >= 100:
      break
  print()
  ret = re.match(r".*\\([^\\]+)", SOUR_PATH)
  name = ret.group(1)
  print("文件夾 %s 復(fù)制完成" % name)
if __name__ == '__main__':
  main()

總結(jié)

以上所述是小編給大家介紹的linux 下python多線程遞歸復(fù)制文件夾及文件夾中的文件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • Python中處理字符串之islower()方法的使用簡介

    Python中處理字符串之islower()方法的使用簡介

    這篇文章主要介紹了Python中處理字符串之islower()方法的使用,是Python入門的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • 對Python中for復(fù)合語句的使用示例講解

    對Python中for復(fù)合語句的使用示例講解

    今天小編就為大家分享一篇對Python中for復(fù)合語句的使用示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • pandas ix &iloc &loc的區(qū)別

    pandas ix &iloc &loc的區(qū)別

    這篇文章主要介紹了pandas ix &iloc &loc的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Python 序列化和反序列化庫 MarshMallow 的用法實例代碼

    Python 序列化和反序列化庫 MarshMallow 的用法實例代碼

    marshmallow(Object serialization and deserialization, lightweight and fluffy.)用于對對象進(jìn)行序列化和反序列化,并同步進(jìn)行數(shù)據(jù)驗證。這篇文章主要介紹了Python 序列化和反序列化庫 MarshMallow 的用法實例代碼,需要的朋友可以參考下
    2020-02-02
  • python使用imap-tools模塊下載郵件附件的示例

    python使用imap-tools模塊下載郵件附件的示例

    imap-tools模塊是python的第三方擴(kuò)展,?它使用標(biāo)準(zhǔn)庫imaplib,并將常見的郵件處理事件封裝,郵件處理起來代碼短,下面給大家介紹下python使用imap-tools模塊下載郵件中的附件示例代碼,感興趣的朋友一起看看吧
    2021-12-12
  • 使用Python快速實現(xiàn)文件共享并通過內(nèi)網(wǎng)穿透技術(shù)公網(wǎng)訪問

    使用Python快速實現(xiàn)文件共享并通過內(nèi)網(wǎng)穿透技術(shù)公網(wǎng)訪問

    數(shù)據(jù)共享作為和連接作為互聯(lián)網(wǎng)的基礎(chǔ)應(yīng)用,不僅在商業(yè)和辦公場景有廣泛的應(yīng)用,對于個人用戶也有很強(qiáng)的實用意義,今天,筆者就為大家介紹,如何使用python這樣的簡單程序語言,在自己的電腦上搭建一個共享文件服務(wù)器,需要的朋友可以參考下
    2023-10-10
  • Flask SQLAlchemy一對一,一對多的使用方法實踐

    Flask SQLAlchemy一對一,一對多的使用方法實踐

    Flask-SQLAlchemy一對一,一對多的使用方法實踐,需要的朋友可以參考下
    2013-02-02
  • python的keyword模塊用法實例分析

    python的keyword模塊用法實例分析

    這篇文章主要介紹了python的keyword模塊用法,實例分析了Python中keyword模塊的基本使用技巧,需要的朋友可以參考下
    2015-06-06
  • 使用py-spy解決scrapy卡死的問題方法

    使用py-spy解決scrapy卡死的問題方法

    這篇文章主要介紹了使用py-spy解決scrapy卡死的問題方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python連續(xù)賦值需要注意的一些問題

    Python連續(xù)賦值需要注意的一些問題

    這篇文章主要介紹了Python連續(xù)賦值需要注意的一些問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論

聊城市| 陇南市| 阜康市| 田东县| 临武县| 炉霍县| 九江市| 布拖县| 郸城县| 舒城县| 固安县| 商水县| 炎陵县| 如东县| 宝鸡市| 山东省| 大石桥市| 金昌市| 舟山市| 高安市| 合水县| 延吉市| 商南县| 宜川县| 弥勒县| 团风县| 许昌市| 二连浩特市| 永登县| 丹阳市| 鹤壁市| 江孜县| 宁明县| 永昌县| 宜良县| 抚顺市| 水城县| 女性| 潜山县| 华安县| 临湘市|