# File Handling

The key function for working with files in Python is the `open()` function.

The `open()` function takes two parameters; *filename*, and *mode*.

There are four different methods (modes) for opening a file:

> `"r"` - Read - Default value. Opens a file for reading, error if the file does not exist
>
> `"a"` - Append - Opens a file for appending, creates the file if it does not exist
>
> `"w"` - Write - Opens a file for writing, creates the file if it does not exist
>
> `"x"` - Create - Creates the specified file, returns an error if the file exists

In addition you can specify if the file should be handled as binary or text mode

> `"t"` - Text - Default value. Text mode
>
> `"b"` - Binary - Binary mode (e.g. images)

### Open a File

To open a file for reading it is enough to specify the name of the file:

```
f = open("file.txt")
```

The code above is the same as:

```
f = open("file.txt", "rt")
```

### Read a File

#### hole file

```
f = open("file.txt", "r")
print(f.read())
```

#### Only Parts

```
f = open("file.txt", "r")
print(f.read(5)) # Return the 5 first characters
```

#### Read Lines

```
f = open("file.txt", "r")
print(f.readline()) # first line
print(f.readline()) # second line
print(f.readline()) # third line
```

we can read hole file using loops

```
f = open("file.txt", "r") 
for x in f:
    print(x)
```

#### Close Files

```
f = open("file.txt", "r")
print(f.readline())
f.close()
```

### Write to an Existing File

To write to an existing file, you must add a parameter to the `open()` function:\
`"a"` - Append - will append to the end of the file\
`"w"` - Write - will overwrite any existing content

**Append**

```
f = open("file.txt", "a")
f.write("Hello world!")
f.close()

#open and read the file after the appending: 
f = open("file.txt", "r")
print(f.read())
Output: Hello world!
```

**Overwrite**

```
f = open("file.txt", "w")
f.write("overwite Hello world!")
f.close()

#open and read the file after the appending: 
f = open("file.txt", "r")
print(f.read())
Output: overwite Hello world!
```

### Create a New File

To create a new file in Python, use the `open()` method, with one of the following parameters:\
`"x"` - Create - will create a file, returns an error if the file exist\
`"a"` - Append - will create a file if the specified file does not exist\
`"w"` - Write - will create a file if the specified file does not exist

```
f = open("file.txt", "x") # returns an error if the file exist
f = open("file.txt", "w") # create a file if the  file does not exist
```

### Delete a File

To delete a file, you must import the OS module, and run its `os.remove()` function:

```
import os
os.remove("demofile.txt")
```

### Delete Folder

```
import os
os.rmdir("myfolder")
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xa1mn.gitbook.io/cyber-explained/programming/python/system-pogramming/file-handling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
