1. 程式人生 > >python 多程序實現檔案下載傳輸

python 多程序實現檔案下載傳輸

需求:
實現資料夾拷貝功能(包括檔案內的檔案),並列印拷貝進度

模組:
利用 os模組
multiprocessing 模組

執行效果圖

import multiprocessing
import os


def deal_file(old_dir,new_dir,file_name,queue):
    # 開啟以存在檔案
    old_file = open(os.path.join(old_dir,file_name),"rb")
    # 建立新檔案
    new_file = open(os.path.join(new_dir,file_name),"wb")
    # 迴圈將內容寫入新檔案
while True: # 單行讀取 data = old_file.readline() # 如果有內容寫入否則退出 if data: new_file.write(data) else: break # 關閉檔案 old_file.close() new_file.close() # 向佇列中新增值用以計數,引數可填任意值 queue.put(file_name) def main(): # 建立使用者輸入檔案的備份
old_dir = input("請輸入檔名:") new_dir = "備份"+old_dir os.mkdir(new_dir) # 列出資料夾內的檔案列表 file_list = os.listdir(old_dir) queue = multiprocessing.Queue(128) for file_name in file_list: pro = multiprocessing.Process(target=deal_file,args=(old_dir,new_dir,file_name,queue)) # 建立子程序
pro.start() # 定義變數用以計數 num = 0 while True: # 取出佇列中的值 queue.get() # 計數器+1 num += 1 # 列印下載進度 print("\r檔案已下載%.2f %%" % (num/len(file_list)*100),end="") # 如果計數等於檔案長度提示完成退出 if num == len(file_list): print("檔案下載完成") break if __name__ == "__main__": main()

相關推薦

python 程序實現檔案下載傳輸

需求: 實現資料夾拷貝功能(包括檔案內的檔案),並列印拷貝進度 模組: 利用 os模組 multiprocessing 模組 import multiprocessing import o

python: gevent輕鬆實現並行下載檔案

參考網站:http://itindex.net/detail/9240-python-gevent-%E5%B9%B6%E8%A1%8C #!/bin/python # file: download.py import gevent from gevent impor

Python任務實現 之協程並發下載圖片

python 協程多任務 協程是Python中實現多任務一種方式,相比多任務之進程和線程,協程不需要消耗過多的資源,更高效的利用了cpu資源。 在Python中通過gevent封裝generator叠代器功能實現多任務的切換。協程在運行過程中是靠程序的耗時操作來實現程序中斷。達到切換多任務。至始至終,

Java執行緒使用執行緒池實現檔案下載

多執行緒下載原理: 1、基本思路是將檔案分段切割、分段傳輸、分段儲存。 2、分段切割用到HttpUrlConnection物件的setRequestProperty(“Range”, “bytes=” + start + “-” + end)方法。 3、分段傳輸用到HttpU

Python程序程式設計及程序間的通訊,資料傳輸

多程序程式設計及程序間的通訊 意義:充分利用計算機的資源提高程式的運算速率 定義:通過應用程式利用計算機多個核心達到同時執行多個任務的目的,以此提高計算機的執行速率 實施方案:多程序 多執行緒 並行: 計算機同時處理多個任務 併發:同時處理多個任務,核心在不斷的任務間小虎切換,達到好像還都在處理執行的

Python程序之multiprocessing模組和程序池的實現

1、利用multiprocessing可以在主程序中建立子程序,提升效率,下面是multiprocessing建立程序的簡單例子,和多執行緒的使用非常相似 ?

Python程序原理與實現

1 程序的基本概念 什麼是程序? ​ 程序就是一個程式在一個數據集上的一次動態執行過程。程序一般由程式、資料集、程序控制塊三部分組成。我們編寫的程式用來描述程序要完成哪些功能以及如何完成;資料集則是程式在執行過程中所需要使用的資源;程序控制塊用來記錄程序的外部特徵,描述程序的執行變化

Python程序寫入同一檔案

最近用python的正則表示式處理了一些文字資料,需要把結果寫到檔案裡面,但是由於檔案比較大,所以執行起來花費的時間很長。但是開啟工作管理員發現CPU只佔用了25%,上網找了一下原因發現是由於一個叫GIL的存在,使得Python在同一時間只能執行一個執行緒,所以

Linux 實現程序拷貝檔案

//copy.c #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include<stdlib.h> #include<sys/stat.h> #include<e

SpringMVC實現檔案下載的兩種方式及檔案下載

1.傳統方法 @RequestMapping("/download") public String download( String fileName ,String filePath, HttpServletRequest request, HttpServl

python + Django 實現檔案下載

from django.shortcuts import HttpResponse def file_down(request): file=open('/home/amarsoft/下載/example.tar.gz','rb') response =HttpResponse(file)

python 使用程序實現併發程式設計/使用queue進行程序間資料交換

import time import os import multiprocessing from multiprocessing import Queue, pool """ 一.Python 使用多程序實現併發程式設計: 因為cpython直譯器中有GIL存在的原因(每個程序都會維護一

python實現檔案下載(包含進度條顯示,檔案大小顯示,下載速度顯示)

不多說了,直接上程式碼記錄: #!/usr/bin/lgy #-*-coding:utf-8-*- import urllib2,threading from PyQt4.QtGui import * from PyQt4.QtCore import * from pu

Python中使用程序複製檔案

使用fork()函式建立父子程序,父程序複製檔案的前半部分,子程序複製檔案的後半部分 #!/usr/bin/python #coding=utf-8 import sys,os #將第一引數作為原始

快速實現Python程序logging日誌按天切割

        前幾天填了一個前人留下的“日誌”坑,程式日誌只有程式重啟才可以生成一個新日誌檔案,這樣就會導致程式長時間執行之後,會生成一個巨大的日誌檔案,不方便後期問題查詢或磁碟清理,所以日誌按天切割勢在必行。python 原生logging日誌模組可以滿足大部分需求,但是

基於HTTP的執行緒檔案下載功能實現

思想 檔案資訊獲取的獲取方式與單執行緒的方式一樣 與單執行緒相比不同的是將遠端檔案分塊併發獲取,然後再併發寫入到本地暫存檔案中 遠端檔案分塊的實現依據是:connection.setRequestProperty(“Range”,”bytes=”+start

Android實現網路執行緒檔案下載

實現原理 (1)首先獲得下載檔案的長度,然後設定本地檔案的長度。 (2)根據檔案長度和執行緒數計算每條執行緒下載的資料長度和下載位置。 如:檔案的長度為6M,執行緒數為3,那麼,每條執行緒下載的資料長度為2M,每條執行緒開始下載的位置如下圖所示: (網上找的圖)  例如1

Python通過Socket實現檔案傳輸

客戶端# -*- coding: utf-8 -*- import socket import argparse import os import hashlib import pickle def parse_args(): parser = argparse.A

Spring 實現檔案下載功能

方式1: public void download(HttpServletResponse response,@RequestParam(value="params") String params) throws IOException, DocumentException{ response

python 程序與子程序

多程序: 1.os.fork() 2.from multiprocessing import Process 3.form multiprocessing import Pool 子程序: subprocess 很多時候,子程序並不是自身,而是一個外部程序。我們建立了子程序後,還需要控制