Python - I / O dei file

Questo capitolo copre tutte le funzioni di I / O di base disponibili in Python. Per ulteriori funzioni, fare riferimento alla documentazione standard di Python.

Stampa sullo schermo

Il modo più semplice per produrre output è utilizzare l' istruzione print in cui è possibile passare zero o più espressioni separate da virgole. Questa funzione converte le espressioni passate in una stringa e scrive il risultato sullo standard output come segue:

#!/usr/bin/python

print "Python is really a great language,", "isn't it?"

Questo produce il seguente risultato sullo schermo standard:

Python is really a great language, isn't it?

Lettura dell'input da tastiera

Python fornisce due funzioni integrate per leggere una riga di testo dall'input standard, che per impostazione predefinita proviene dalla tastiera. Queste funzioni sono:

  • raw_input
  • input

La funzione raw_input

La funzione raw_input ([prompt]) legge una riga dallo standard input e la restituisce come una stringa (rimuovendo la nuova riga finale).

#!/usr/bin/python

str = raw_input("Enter your input: ")
print "Received input is : ", str

Questo ti chiede di inserire qualsiasi stringa e visualizzerà la stessa stringa sullo schermo. Quando ho digitato "Hello Python!", Il suo output è come questo -

Enter your input: Hello Python
Received input is :  Hello Python

La funzione di input

La funzione input ([prompt]) è equivalente a raw_input, tranne per il fatto che presume che l'input sia un'espressione Python valida e restituisce il risultato valutato.

#!/usr/bin/python

str = input("Enter your input: ")
print "Received input is : ", str

Ciò produrrebbe il seguente risultato rispetto all'input inserito:

Enter your input: [x*5 for x in range(2,10,2)]
Recieved input is :  [10, 20, 30, 40]

Apertura e chiusura di file

Fino ad ora, hai letto e scritto sullo standard input e output. Ora vedremo come utilizzare i file di dati effettivi.

Python fornisce funzioni e metodi di base necessari per manipolare i file per impostazione predefinita. Puoi eseguire la maggior parte della manipolazione dei file utilizzando un filefile oggetto.

La funzione aperta

Prima di poter leggere o scrivere un file, devi aprirlo utilizzando la funzione open () incorporata di Python . Questa funzione crea un filefile oggetto, che verrebbe utilizzato per chiamare altri metodi di supporto ad esso associati.

Sintassi

file object = open(file_name [, access_mode][, buffering])

Ecco i dettagli dei parametri:

  • file_name - L'argomento file_name è un valore stringa che contiene il nome del file a cui si desidera accedere.

  • access_mode- La modalità access_mode determina la modalità in cui il file deve essere aperto, ovvero lettura, scrittura, aggiunta, ecc. Un elenco completo dei valori possibili è fornito di seguito nella tabella. Questo è un parametro opzionale e la modalità di accesso ai file predefinita è read (r).

  • buffering- Se il valore di buffering è impostato su 0, non viene eseguito alcun buffering. Se il valore di buffering è 1, il buffer di riga viene eseguito durante l'accesso a un file. Se si specifica il valore di buffer come un numero intero maggiore di 1, l'azione di buffer viene eseguita con la dimensione del buffer indicata. Se negativo, la dimensione del buffer è l'impostazione predefinita del sistema (comportamento predefinito).

Di seguito è riportato un elenco delle diverse modalità di apertura di un file:

Sr.No. Modalità e descrizione
1

r

Apre un file di sola lettura. Il puntatore del file viene posizionato all'inizio del file. Questa è la modalità di default.

2

rb

Apre un file per la sola lettura in formato binario. Il puntatore del file viene posizionato all'inizio del file. Questa è la modalità di default.

3

r+

Apre un file sia in lettura che in scrittura. Il puntatore del file posizionato all'inizio del file.

4

rb+

Apre un file sia in lettura che in scrittura in formato binario. Il puntatore del file posizionato all'inizio del file.

5

w

Apre un file di sola scrittura. Sovrascrive il file se il file esiste. Se il file non esiste, crea un nuovo file per la scrittura.

6

wb

Apre un file per la scrittura solo in formato binario. Sovrascrive il file se il file esiste. Se il file non esiste, crea un nuovo file per la scrittura.

7

w+

Apre un file sia in scrittura che in lettura. Sovrascrive il file esistente se il file esiste. Se il file non esiste, crea un nuovo file per la lettura e la scrittura.

8

wb+

Apre un file sia in scrittura che in lettura in formato binario. Sovrascrive il file esistente se il file esiste. Se il file non esiste, crea un nuovo file per la lettura e la scrittura.

9

a

Apre un file da aggiungere. Il puntatore del file si trova alla fine del file se il file esiste. Cioè, il file è in modalità di aggiunta. Se il file non esiste, crea un nuovo file per la scrittura.

10

ab

Apre un file da aggiungere in formato binario. Il puntatore del file si trova alla fine del file se il file esiste. Cioè, il file è in modalità di aggiunta. Se il file non esiste, crea un nuovo file per la scrittura.

11

a+

Apre un file sia per l'aggiunta che per la lettura. Il puntatore del file si trova alla fine del file se il file esiste. Il file si apre in modalità di aggiunta. Se il file non esiste, crea un nuovo file per la lettura e la scrittura.

12

ab+

Apre un file sia per l'aggiunta che per la lettura in formato binario. Il puntatore del file si trova alla fine del file se il file esiste. Il file si apre in modalità di aggiunta. Se il file non esiste, crea un nuovo file per la lettura e la scrittura.

Il file Object Attributes

Una volta che un file è stato aperto e hai un oggetto file , puoi ottenere varie informazioni relative a quel file.

Ecco un elenco di tutti gli attributi relativi all'oggetto file:

Sr.No. Attributo e descrizione
1

file.closed

Restituisce vero se il file è chiuso, falso in caso contrario.

2

file.mode

Restituisce la modalità di accesso con la quale il file è stato aperto.

3

file.name

Restituisce il nome del file.

4

file.softspace

Restituisce false se lo spazio è esplicitamente richiesto con print, altrimenti true.

Esempio

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name
print "Closed or not : ", fo.closed
print "Opening mode : ", fo.mode
print "Softspace flag : ", fo.softspace

Questo produce il seguente risultato:

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb
Softspace flag :  0

Il metodo close ()

Il metodo close () di un oggetto file scarica qualsiasi informazione non scritta e chiude l'oggetto file, dopodiché non è più possibile scrivere.

Python chiude automaticamente un file quando l'oggetto di riferimento di un file viene riassegnato a un altro file. È buona norma utilizzare il metodo close () per chiudere un file.

Sintassi

fileObject.close()

Esempio

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name

# Close opend file
fo.close()

Questo produce il seguente risultato:

Name of the file:  foo.txt

Lettura e scrittura di file

L' oggetto file fornisce una serie di metodi di accesso per semplificarci la vita. Vedremo come usare i metodi read () e write () per leggere e scrivere file.

Il metodo write ()

Il metodo write () scrive qualsiasi stringa in un file aperto. È importante notare che le stringhe Python possono avere dati binari e non solo testo.

Il metodo write () non aggiunge un carattere di nuova riga ('\ n') alla fine della stringa -

Sintassi

fileObject.write(string)

Qui, il parametro passato è il contenuto da scrivere nel file aperto.

Esempio

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opend file
fo.close()

Il metodo sopra creerebbe il file foo.txt e scriverà il contenuto dato in quel file e alla fine chiuderà quel file. Se aprissi questo file, avrebbe il seguente contenuto.

Python is a great language.
Yeah its great!!

Il metodo read ()

Il metodo read () legge una stringa da un file aperto. È importante notare che le stringhe Python possono avere dati binari. oltre ai dati di testo.

Sintassi

fileObject.read([count])

Qui, il parametro passato è il numero di byte da leggere dal file aperto. Questo metodo inizia a leggere dall'inizio del file e se il conteggio manca, cerca di leggere il più possibile, forse fino alla fine del file.

Esempio

Prendiamo un file foo.txt , che abbiamo creato sopra.

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend file
fo.close()

Questo produce il seguente risultato:

Read String is :  Python is

Posizioni dei file

Il metodo tell () ti dice la posizione corrente all'interno del file; in altre parole, la successiva lettura o scrittura avverrà a quel numero di byte dall'inizio del file.

Il metodo seek (offset [, from]) cambia la posizione del file corrente. L' argomento offset indica il numero di byte da spostare. L' argomento from specifica la posizione di riferimento da cui devono essere spostati i byte.

Se from è impostato a 0, significa usa l'inizio del file come posizione di riferimento e 1 significa usa la posizione corrente come posizione di riferimento e se è impostato a 2 allora la fine del file sarà presa come posizione di riferimento .

Esempio

Prendiamo un file foo.txt , che abbiamo creato sopra.

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print "Read String is : ", str

# Check current position
position = fo.tell()
print "Current file position : ", position

# Reposition pointer at the beginning once again
position = fo.seek(0, 0);
str = fo.read(10)
print "Again read String is : ", str
# Close opend file
fo.close()

Questo produce il seguente risultato:

Read String is :  Python is
Current file position :  10
Again read String is :  Python is

Ridenominazione ed eliminazione di file

Pitone os Il modulo fornisce metodi che aiutano a eseguire operazioni di elaborazione dei file, come rinominare ed eliminare i file.

Per usare questo modulo devi prima importarlo e poi puoi chiamare tutte le funzioni correlate.

Il metodo rename ()

Il metodo rename () accetta due argomenti, il nome del file corrente e il nuovo nome del file.

Sintassi

os.rename(current_file_name, new_file_name)

Esempio

Di seguito è riportato l'esempio per rinominare un file esistente test1.txt -

#!/usr/bin/python
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

Il metodo remove ()

È possibile utilizzare il metodo remove () per eliminare i file fornendo il nome del file da eliminare come argomento.

Sintassi

os.remove(file_name)

Esempio

Di seguito è riportato l'esempio per eliminare un file esistente test2.txt -

#!/usr/bin/python
import os

# Delete file test2.txt
os.remove("text2.txt")

Directory in Python

Tutti i file sono contenuti in varie directory e Python non ha problemi a gestirli. Ilos Il modulo ha diversi metodi che ti aiutano a creare, rimuovere e cambiare directory.

Il metodo mkdir ()

Puoi usare il metodo mkdir () diosmodulo per creare directory nella directory corrente. È necessario fornire un argomento a questo metodo che contiene il nome della directory da creare.

Sintassi

os.mkdir("newdir")

Esempio

Di seguito è riportato l'esempio per creare un test di directory nella directory corrente:

#!/usr/bin/python
import os

# Create a directory "test"
os.mkdir("test")

Il metodo chdir ()

Puoi usare il metodo chdir () per cambiare la directory corrente. Il metodo chdir () accetta un argomento, che è il nome della directory che vuoi rendere la directory corrente.

Sintassi

os.chdir("newdir")

Esempio

Di seguito è riportato l'esempio per entrare nella directory "/ home / newdir" -

#!/usr/bin/python
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

Il metodo getcwd ()

Il metodo getcwd () mostra la directory di lavoro corrente.

Sintassi

os.getcwd()

Esempio

Di seguito è riportato l'esempio per fornire la directory corrente:

#!/usr/bin/python
import os

# This would give location of the current directory
os.getcwd()

Il metodo rmdir ()

Il metodo rmdir () cancella la directory, che viene passata come argomento nel metodo.

Prima di rimuovere una directory, tutti i contenuti in essa dovrebbero essere rimossi.

Sintassi

os.rmdir('dirname')

Esempio

Di seguito è riportato l'esempio per rimuovere la directory "/ tmp / test". È necessario fornire il nome completo della directory, altrimenti cercherà quella directory nella directory corrente.

#!/usr/bin/python
import os

# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )

Metodi relativi a file e directory

Esistono tre fonti importanti, che forniscono un'ampia gamma di metodi di utilità per gestire e manipolare file e directory sui sistemi operativi Windows e Unix. Sono i seguenti: