Python 3 - I / O file

Questo capitolo copre tutte le funzioni di I / O di base disponibili in Python 3. 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/python3

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 2 ha due funzioni integrate per leggere i dati dallo standard input, che per impostazione predefinita proviene dalla tastiera. Queste funzioni sonoinput() e raw_input()

In Python 3, la funzione raw_input () è deprecata. Inoltre, le funzioni input () leggono i dati dalla tastiera come stringa, indipendentemente dal fatto che siano racchiusi tra virgolette ('' o "") o meno.

La funzione di input

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

#!/usr/bin/python3

>>> x = input("something:")
something:10

>>> x
'10'

>>> x = input("something:")
something:'10' #entered data treated as string with or without ''

>>> x
"'10'"

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- Access_mode determina la modalità in cui il file deve essere aperto, ovvero lettura, scrittura, aggiunta, ecc. Un elenco completo dei possibili valori è 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 a un 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.

Note - l'attributo softspace non è supportato in Python 3.x

Esempio

#!/usr/bin/python3

# 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)
fo.close()

Questo produce il seguente risultato:

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

Il metodo close ()

Il metodo close () di un oggetto file scarica tutte le informazioni non scritte 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/python3

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

# Close opened 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. Vedremmo come usareread() e write() metodi per leggere e scrivere file.

Il metodo write ()

Il write()metodo 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/python3

# Open a file
fo = open("foo.txt", "w")
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 read()metodo 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/python3

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

# Close opened 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. Iloffsetargomento indica il numero di byte da spostare. Ilfrom L'argomento specifica la posizione di riferimento da cui devono essere spostati i byte.

Se from è impostato a 0, l'inizio del file viene utilizzato come posizione di riferimento. Se è impostato su 1, la posizione corrente viene utilizzata come posizione di riferimento. Se è impostato su 2, la fine del file verrà considerata come posizione di riferimento.

Esempio

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

#!/usr/bin/python3

# 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 opened 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 la ridenominazione e l'eliminazione dei file.

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

Il metodo rename ()

Il rename() il metodo 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 un esempio per rinominare un file esistente test1.txt -

#!/usr/bin/python3
import os

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

Il metodo remove ()

Puoi usare il file remove() metodo per eliminare i file fornendo il nome del file da eliminare come argomento.

Sintassi

os.remove(file_name)

Esempio

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

#!/usr/bin/python3
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 file mkdir() metodo del osmodulo 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 un esempio per creare un test di directory nella directory corrente:

#!/usr/bin/python3
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 si desidera rendere la directory corrente.

Sintassi

os.chdir("newdir")

Esempio

Di seguito è riportato un esempio per accedere alla directory "/ home / newdir" -

#!/usr/bin/python3
import os

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

Il metodo getcwd ()

Il getcwd() mostra la directory di lavoro corrente.

Sintassi

os.getcwd()

Esempio

Di seguito è riportato un esempio per fornire la directory corrente:

#!/usr/bin/python3
import os

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

Il metodo rmdir ()

Il rmdir() metodo elimina 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 un esempio per rimuovere la directory "/ tmp / test". È necessario fornire il nome completo della directory, altrimenti cercherà quella directory nella directory corrente.

#!/usr/bin/python3
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: