Python: comment faire pour créer un nouveau fichier et écrire du contenu de la variable?
Je suis en train d'écrire un programme qui affiche les types de fichiers à l'intérieur d'un répertoire en regardant leurs en-têtes.
Certains fichiers sont compressés, donc j'ai besoin d'être en mesure de décompresser comme un point de départ
Jusqu'à présent j'ai été en mesure de rechercher les répertoires et en utilisant l'en-tête de changer les extensions, et ouvrez le fichier compressé et stocker son contenu dans une variable, maintenant, je vais avoir de la difficulté à épargner la variable en tant que nouveau fichier.
def unzip():
os.chdir("C:/Users/David/Myfiles")
files = os.listdir(".")
for x in (files):
f = open((x), "rb")
byte1 = f.read(1)
byte2 = f.read(1)
if byte1 == b'\x1f' and byte2 == b'\x8b':
os.rename((x), (x) + ".gz")
file = gzip.open((x), "rb")
content = file.read()
print (content)
Je suppose que je vais devoir utiliser la commande le long des lignes de f.write("newfile", content)
, mais pas sûr.
Merci d'avance
Comprenez-vous ce que
pourquoi? pas vraiment une réponse ou quelque chose est-il
f
est ici?pourquoi? pas vraiment une réponse ou quelque chose est-il
OriginalL'auteur | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
En général, si vous avez une chaîne dans une variable
foo
, vous pouvez l'écrire dans un fichier avec:Dans votre cas, vous ne l'utilisez
f
que vous utilisez déjàf
pour votre entrée descripteur de fichier.Je suppose que vous voulez quelque chose comme:
Merci, il fixe dans l'intervalle
ok merci, ce qui ne l'instruction? ne puis-je pas juste écrire "deh.open('sortie.fichier', '2' comme deh?
Le
with
énoncé est appelé un contexte-manager qui gère la fermeture du descripteur de fichier pour vous automatiquement.donc, fondamentalement, c'est au lieu de taper deh.close('nom du fichier')
OriginalL'auteur jedwards
vous devriez faire quelque chose comme:
découvrez les docs à http://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files
OriginalL'auteur Andbdrew
Vous n'avez pas à regarder les deux premiers octets pour identifier les fichiers gz. Au lieu de cela, je pense qu'un plus "Pythonic" approche serait d'essayer d'abord, de s'excuser plus tard (plus connu sous le nom "Plus facile de demander Pardon que la Permission"):
Aussi, il est préférable d'éviter d'utiliser
os.chdir
si possible, car il modifie le répertoire en cours, même après avoir quitté leuncompress
fonction. Si votre script traite avec d'autres répertoires, vous devez contrôler attentivement ce que le répertoire courant est à chaque étape de votre programme. Si vous utilisezos.path.join
au lieu de cela, vous n'aurez jamais à vous soucier de ce qu'est le répertoire courant.OriginalL'auteur unutbu