Üdvözöljük
Szia! Ha meg szeretné tudni, hogyan kell dolgozni a fájlokkal a Pythonban, akkor ez a cikk az Ön számára készült. A fájlokkal való munka fontos készség, amelyet minden Python fejlesztőnek meg kell tanulnia, ezért kezdjük.
Ebben a cikkben megtudhatja:
- Hogyan nyitható meg egy fájl.
- Fájl olvasása.
- Fájl létrehozása.
- A fájl módosítása.
- Fájl bezárása.
- Fájlok megnyitása több művelethez.
- Hogyan működjünk a fájlobjektum-módszerekkel.
- Fájlok törlése.
- Hogyan kell együttműködni a kontextusmenedzserekkel és miért hasznosak?
- Hogyan kezelhetők azok a kivételek, amelyek felmerülhetnek, ha fájlokkal dolgozik.
- és több!
Kezdjük! ✨
? Fájlokkal való munka: Alapszintaktika
Az egyik legfontosabb funkció, amelyet használni kell, amikor a Python fájljaival dolgozik open()
, egy beépített funkció, amely megnyit egy fájlt, és lehetővé teszi a program számára, hogy használja és dolgozzon vele.
Ez az alapvető szintaxis :

? Tipp: Ez a két leggyakrabban használt argumentum ennek a függvénynek a hívására. Hat további opcionális argumentum van. Ha többet szeretne megtudni róluk, olvassa el ezt a cikket a dokumentációban.
Első paraméter: Fájl
A open()
függvény első paramétere file
az abszolút vagy relatív elérési út ahhoz a fájlhoz, amellyel megpróbál dolgozni.
Általában egy relatív elérési utat használunk, amely jelzi a fájl helyét a open()
függvényt meghívó szkript (Python fájl) helyéhez képest .
Például a függvény elérési útja:
open("names.txt") # The relative path is "names.txt"
Csak a fájl nevét tartalmazza. Ez akkor használható, ha a megnyitni kívánt fájl ugyanabban a könyvtárban vagy mappában van, mint a Python szkript, így:

De ha a fájl beágyazott mappában van, így:

Ezután egy meghatározott elérési utat kell használnunk annak megadásához, hogy a fájl egy másik mappában van.
Ebben a példában ez lenne az út:
open("data/names.txt")
Figyelje meg, hogy data/
először mi írunk (a mappa neve, majd az a /
), majd names.txt
(a kiterjesztésű fájl neve).
? Tipp: A .txt
pontot követő három betű names.txt
a fájl "kiterjesztése" vagy típusa. Ebben az esetben .txt
azt jelzi, hogy ez egy szöveges fájl.
Második paraméter: mód
A open()
függvény második paramétere a mode
, egy karakterlánc. Ez az egyetlen karakter alapvetően megmondja a Pythonnak, hogy mit tervez a programod fájljával.
A rendelkezésre álló módok:
- Olvassa el (
"r"
). - Függelék (
"a"
) - Írjon (
"w"
) - Létrehozás (
"x"
)
Azt is megadhatja, hogy megnyitja-e a fájlt:
- Szöveges mód (
"t"
) - Bináris mód (
"b"
)
A szöveges vagy bináris mód használatához ezeket a karaktereket hozzá kell adnia a fő módhoz. Például: "wb"
jelentése bináris módban történő írás.
? Tipp: Az alapértelmezett módok az read ( "r"
) és a text ( "t"
), ami azt jelenti, hogy "nyitott a szöveg olvasására" ( "rt"
), ezért nem kell megadnia őket, open()
ha használni szeretné őket, mert alapértelmezés szerint vannak hozzárendelve. Egyszerűen írhat open()
.
Miért a módok?
Valóban van értelme a Pythonnak csak bizonyos engedélyeket megadni azon az alapon, amit a fájllal tervez. Miért engedi a Python, hogy a program a szükségesnél többet tegyen? Alapvetően ezért léteznek módok.
Gondoljon bele - ha egy programnak a szükségesnél többet végeznek, problematikus lehet. Például, ha csak egy fájl tartalmát kell elolvasnia, veszélyes lehet engedélyezni a program váratlan módosítását, ami hibákat okozhat.
? Fájlok olvasása
Most, hogy többet tud a open()
függvény által használt argumentumokról , nézzük meg, hogyan nyithat meg egy fájlt és tárolhatja azt egy változóban, hogy felhasználhassa a programjában.
Ez az alapvető szintaxis:

Egyszerűen hozzárendeljük a visszaküldött értéket egy változóhoz. Például:
names_file = open("data/names.txt", "r")
Tudom, hogy kérdezheti: milyen típusú értéket ad vissza open()
?
Nos, egy fájl objektum .
Beszéljünk egy kicsit róluk.
Fájl objektumok
Szerint a Python-dokumentáció, a fájl objektum van:
Egy fájlorientált API-t (olyan módszerekkel, mint például read () vagy write ()) egy mögöttes erőforrásnak kitevő objektum.Ez alapvetően azt mondja nekünk, hogy a fájlobjektum olyan objektum, amely lehetővé teszi számunkra, hogy dolgozzunk és kölcsönhatásba lépjünk a Python programunk meglévő fájljaival.
A fájlobjektumok attribútumokkal rendelkeznek, például:
- name: the name of the file.
- closed:
True
if the file is closed.False
otherwise. - mode: the mode used to open the file.

For example:
f = open("data/names.txt", "a") print(f.mode) # Output: "a"
Now let's see how you can access the content of a file through a file object.
Methods to Read a File
For us to be able to work file objects, we need to have a way to "interact" with them in our program and that is exactly what methods do. Let's see some of them.
Read()
The first method that you need to learn about is read()
,which returns the entire content of the file as a string.

Here we have an example:
f = open("data/names.txt") print(f.read())
The output is:
Nora Gino Timmy William
You can use the type()
function to confirm that the value returned by f.read()
is a string:
print(type(f.read())) # Output
Yes, it's a string!
In this case, the entire file was printed because we did not specify a maximum number of bytes, but we can do this as well.
Here we have an example:
f = open("data/names.txt") print(f.read(3))
The value returned is limited to this number of bytes:
Nor
❗️Important: You need to close a file after the task has been completed to free the resources associated to the file. To do this, you need to call the close()
method, like this:

Readline() vs. Readlines()
You can read a file line by line with these two methods. They are slightly different, so let's see them in detail.
readline()
reads one line of the file until it reaches the end of that line. A trailing newline character (\n
) is kept in the string.
? Tip: Optionally, you can pass the size, the maximum number of characters that you want to include in the resulting string.

For example:
f = open("data/names.txt") print(f.readline()) f.close()
The output is:
Nora
This is the first line of the file.
In contrast, readlines()
returns a list with all the lines of the file as individual elements (strings). This is the syntax:

For example:
f = open("data/names.txt") print(f.readlines()) f.close()
The output is:
['Nora\n', 'Gino\n', 'Timmy\n', 'William']
Notice that there is a \n
(newline character) at the end of each string, except the last one.
? Tip: You can get the same list with list(f)
.
You can work with this list in your program by assigning it to a variable or using it in a loop:
f = open("data/names.txt") for line in f.readlines(): # Do something with each line f.close()
We can also iterate over f
directly (the file object) in a loop:
f = open("data/names.txt", "r") for line in f: # Do something with each line f.close()
Those are the main methods used to read file objects. Now let's see how you can create files.
? Fájl létrehozása
Ha "dinamikusan" kell létrehoznia egy fájlt a Python használatával, akkor a "x"
móddal megteheti .
Lássuk, hogyan. Ez az alapvető szintaxis:

Itt egy példa. Ez a jelenlegi munkakönyvtáram:

Ha ezt a kódsort futtatom:
f = open("new_file.txt", "x")
Új fájl készül ezzel a névvel:

Ezzel a móddal létrehozhat egy fájlt, majd dinamikusan írhat rá olyan módszerekkel, amelyeket néhány pillanat alatt megtanul.
? Tipp: A fájl kezdetben üres lesz, amíg meg nem módosítja.
Érdekesség, hogy ha újra megpróbálja futtatni ezt a sort, és már létezik egy ilyen nevű fájl, akkor ezt a hibát látja:
Traceback (most recent call last): File "", line 8, in f = open("new_file.txt", "x") FileExistsError: [Errno 17] File exists: 'new_file.txt'
A Python dokumentáció szerint ez a kivétel (futásidejű hiba):
Felmerül, amikor megpróbál létrehozni egy már létező fájlt vagy könyvtárat.Now that you know how to create a file, let's see how you can modify it.
? How to Modify a File
To modify (write to) a file, you need to use the write()
method. You have two ways to do it (append or write) based on the mode that you choose to open it with. Let's see them in detail.
Append
"Appending" means adding something to the end of another thing. The "a"
mode allows you to open a file to append some content to it.
For example, if we have this file:

And we want to add a new line to it, we can open it using the "a"
mode (append) and then, call the write()
method, passing the content that we want to append as argument.
This is the basic syntax to call the write()
method:

Here's an example:
f = open("data/names.txt", "a") f.write("\nNew Line") f.close()
? Tip: Notice that I'm adding \n
before the line to indicate that I want the new line to appear as a separate line, not as a continuation of the existing line.
This is the file now, after running the script:

? Tip: The new line might not be displayed in the file untilf.close()
runs.
Write
Sometimes, you may want to delete the content of a file and replace it entirely with new content. You can do this with the write()
method if you open the file with the "w"
mode.
Here we have this text file:

If I run this script:
f = open("data/names.txt", "w") f.write("New Content") f.close()
This is the result:

As you can see, opening a file with the "w"
mode and then writing to it replaces the existing content.
? Tip: The write()
method returns the number of characters written.
If you want to write several lines at once, you can use the writelines()
method, which takes a list of strings. Each string represents a line to be added to the file.
Here's an example. This is the initial file:

If we run this script:
f = open("data/names.txt", "a") f.writelines(["\nline1", "\nline2", "\nline3"]) f.close()
The lines are added to the end of the file:

Open File For Multiple Operations
Now you know how to create, read, and write to a file, but what if you want to do more than one thing in the same program? Let's see what happens if we try to do this with the modes that you have learned so far:
If you open a file in "r"
mode (read), and then try to write to it:
f = open("data/names.txt") f.write("New Content") # Trying to write f.close()
You will get this error:
Traceback (most recent call last): File "", line 9, in f.write("New Content") io.UnsupportedOperation: not writable
Similarly, if you open a file in "w"
mode (write), and then try to read it:
f = open("data/names.txt", "w") print(f.readlines()) # Trying to read f.write("New Content") f.close()
You will see this error:
Traceback (most recent call last): File "", line 14, in print(f.readlines()) io.UnsupportedOperation: not readable
The same will occur with the "a"
(append) mode.
How can we solve this? To be able to read a file and perform another operation in the same program, you need to add the "+"
symbol to the mode, like this:
f = open("data/names.txt", "w+") # Read + Write
f = open("data/names.txt", "a+") # Read + Append
f = open("data/names.txt", "r+") # Read + Write
Very useful, right? This is probably what you will use in your programs, but be sure to include only the modes that you need to avoid potential bugs.
Sometimes files are no longer needed. Let's see how you can delete files using Python.
? How to Delete Files
To remove a file using Python, you need to import a module called os
which contains functions that interact with your operating system.
? Tip: A module is a Python file with related variables, functions, and classes.
Particularly, you need the remove()
function. This function takes the path to the file as argument and deletes the file automatically.

Let's see an example. We want to remove the file called sample_file.txt
.

To do it, we write this code:
import os os.remove("sample_file.txt")
- The first line:
import os
is called an "import statement". This statement is written at the top of your file and it gives you access to the functions defined in theos
module. - The second line:
os.remove("sample_file.txt")
removes the file specified.
? Tip: you can use an absolute or a relative path.
Now that you know how to delete files, let's see an interesting tool... Context Managers!
? Meet Context Managers
Context Managers are Python constructs that will make your life much easier. By using them, you don't need to remember to close a file at the end of your program and you have access to the file in the particular part of the program that you choose.
Syntax
This is an example of a context manager used to work with files:

? Tip: The body of the context manager has to be indented, just like we indent loops, functions, and classes. If the code is not indented, it will not be considered part of the context manager.
When the body of the context manager has been completed, the file closes automatically.
with open("", "") as : # Working with the file... # The file is closed here!
Example
Here's an example:
with open("data/names.txt", "r+") as f: print(f.readlines())
This context manager opens the names.txt
file for read/write operations and assigns that file object to the variable f
. This variable is used in the body of the context manager to refer to the file object.
Trying to Read it Again
After the body has been completed, the file is automatically closed, so it can't be read without opening it again. But wait! We have a line that tries to read it again, right here below:
with open("data/names.txt", "r+") as f: print(f.readlines()) print(f.readlines()) # Trying to read the file again, outside of the context manager
Nézzük mi történik:
Traceback (most recent call last): File "", line 21, in print(f.readlines()) ValueError: I/O operation on closed file.
Ez a hiba azért merült fel, mert egy zárt fájlt próbálunk olvasni. Félelmetes, igaz? A kontextuskezelő minden nehéz munkát elvégez helyettünk, olvasható és tömör.
? Hogyan kezelhetők a kivételek a fájlokkal való munka során
Ha fájlokkal dolgozik, hibák jelentkezhetnek. Előfordulhat, hogy nem rendelkezik a fájl módosításához vagy eléréséhez szükséges engedélyekkel, vagy előfordulhat, hogy egy fájl nem is létezik.
Programozóként előre kell látnia ezeket a körülményeket és kezelnie kell a programban, hogy elkerülje a hirtelen összeomlást, amely mindenképpen befolyásolhatja a felhasználói élményt.
Nézzük meg a leggyakoribb kivételeket (futásidejű hibák), amelyeket a fájlokkal végzett munka során találhat:
FileNotFoundError
A Python dokumentáció szerint ez a kivétel:
Akkor emelkedik, ha fájlt vagy könyvtárat kérnek, de nem létezik.For example, if the file that you're trying to open doesn't exist in your current working directory:
f = open("names.txt")
You will see this error:
Traceback (most recent call last): File "", line 8, in f = open("names.txt") FileNotFoundError: [Errno 2] No such file or directory: 'names.txt'
Let's break this error down this line by line:
File "", line 8, in
. This line tells you that the error was raised when the code on the file located inwas running. Specifically, when
line 8
was executed in.
f = open("names.txt")
. This is the line that caused the error.FileNotFoundError: [Errno 2] No such file or directory: 'names.txt'
. This line says that aFileNotFoundError
exception was raised because the file or directorynames.txt
doesn't exist.
? Tip: Python is very descriptive with the error messages, right? This is a huge advantage during the process of debugging.
PermissionError
This is another common exception when working with files. According to the Python Documentation, this exception is:
Akkor emelt fel, amikor egy műveletet megfelelő hozzáférési jogok - például fájlrendszer-engedélyek - nélkül próbál futtatni.Ez a kivétel akkor merül fel, amikor olyan fájlt próbál olvasni vagy módosítani, amelyhez nincs hozzáférési jogosultsága. Ha megpróbálja ezt megtenni, a következő hibaüzenetet fogja látni:
Traceback (most recent call last): File "", line 8, in f = open("") PermissionError: [Errno 13] Permission denied: 'data'
IsADirectoryError
A Python dokumentáció szerint ez a kivétel:
Felmerül, ha fájlmûveletet kérnek egy könyvtárból.Ez a bizonyos kivétel akkor merül fel, amikor fájl helyett könyvtárat próbál megnyitni vagy azon dolgozni, ezért legyen nagyon óvatos az érvelésként megadott útvonallal.
Hogyan kell kezelni a kivételeket
Ezeknek a kivételeknek a kezeléséhez használhat egy try / kivétel utasítást. Ezzel az állítással "megmondhatja" programjának, hogy mit kell tennie, ha valami váratlan dolog történik.
Ez az alapvető szintaxis:
try: # Try to run this code except : # If an exception of this type is raised, stop the process and jump to this block
Here you can see an example with FileNotFoundError
:
try: f = open("names.txt") except FileNotFoundError: print("The file doesn't exist")
This basically says:
- Try to open the file
names.txt
. - If a
FileNotFoundError
is thrown, don't crash! Simply print a descriptive statement for the user.
? Tip: You can choose how to handle the situation by writing the appropriate code in the except
block. Perhaps you could create a new file if it doesn't exist already.
To close the file automatically after the task (regardless of whether an exception was raised or not in the try
block) you can add the finally
block.
try: # Try to run this code except : # If this exception is raised, stop the process immediately and jump to this block finally: # Do this after running the code, even if an exception was raised
This is an example:
try: f = open("names.txt") except FileNotFoundError: print("The file doesn't exist") finally: f.close()
There are many ways to customize the try/except/finally statement and you can even add an else
block to run a block of code only if no exceptions were raised in the try
block.
? Tip: To learn more about exception handling in Python, you may like to read my article: "How to Handle Exceptions in Python: A Detailed Visual Introduction".
? In Summary
- You can create, read, write, and delete files using Python.
- File objects have their own set of methods that you can use to work with them in your program.
- Context Managers help you work with files and manage them by closing them automatically when a task has been completed.
- Exception handling is key in Python. Common exceptions when you are working with files include
FileNotFoundError
,PermissionError
andIsADirectoryError
. They can be handled using try/except/else/finally.
I really hope you liked my article and found it helpful. Now you can work with files in your Python projects. Check out my online courses. Follow me on Twitter. ⭐️