2016-04-17 4 views
1

Ich bin Neuling in Python,mit zufälligen Namen in Python und zip sie

Ich brauche eine große Menge von Dateien mit zufälligen Namen in Dest_Dir (mein Zielverzeichnis) zu erstellen, und dann Zip sie zu einer Datei.

Hat jemand eine Idee, wie man das macht? Ich schaffte Dateien mit einer for Schleife in einen bestimmten Ordner zu erstellen, aber es passt nicht für den Fall, dass ich große Menge an Datei erstellen möchte (sagen wir 100) Und die Namen, die ich erstellt habe, sind nicht zufällig.

import os 
import sys 
import platform 
SRC_Dir = os.path.dirname(__file__) 
Dest_Dir = os.path.join(SRC_Dir, 'dest') 
items = ["one", "two", "three"] 
for item in items: 
    #(os.path.join(Dest_Dir, filename), 'wb') as temp_file: 
    with open(os.path.join(Dest_Dir, item), 'wb') as f: 
     f.write("This is my first line of code") 
     f.write("\nThis is my second line of code with {} the first item in my list".format(item)) 
     f.write("\nAnd this is my last line of code") 
+1

Können Sie bitte einen [mcve] Ihres Codeversuchs bitte zur Verfügung stellen? – idjaw

+2

Sie sollten zuerst über ['random'] (https://docs.python.org/2/library/random.html) und [' zipfile'] (https://docs.python.org/2/library) lesen /zipfile.html) Module. – Selcuk

+0

er meinte wohl fit nicht füße, folgere ..... –

Antwort

4

Sie könnten Verwendung der tempfile-in gebaut machen

import os 
import tempfile 

for _ in range(100): 
    file_descriptor, file_path = tempfile.mkstemp(".txt", "prefix-", Dest_Dir) 
    file_handle = open(file_path, "wb") 
    # do stuff 
    os.close(file_descriptor) 
    file_handle.close() 

Da ein Kommentar über die Rolle zip gemacht wurde ich dachte ich, dass auch

import os 
import tempfile 
import zipfile 

new_files = [] 
for _ in range(10): 
    file_descriptor, file_path = tempfile.mkstemp(".txt", "prefix-", "/tmp") 
    file_handle = open(file_path, "wb") 
    file_handle.write("HELLO") 
    os.close(file_descriptor) 
    file_handle.close() 
    new_files.append(file_path) 

with zipfile.ZipFile("/tmp/zipped.zip", "w") as zipped: 
    for file_path in new_files: 
     zipped.write(file_path, os.path.basename(file_path)) 
hinzufügen würde

Die zipped.write Argumente hier nehmen an, dass nur der Dateiname (und nicht der Pfad) für den archivierten Namen gewünscht wird.

Verwandte Themen