1.
Batch Rename Files
import os
def batch_rename_files(directory, new_name):
for count, filename in enumerate(os.listdir(directory)):
extension = os.path.splitext(filename)[1]
new_filename = f"{new_name}_{count+1}{extension}"
old_path = os.path.join(directory, filename)
new_path = os.path.join(directory, new_filename)
os.rename(old_path, new_path)
directory = "/path/to/your/directory"
new_name = "new_filename"
batch_rename_files(directory, new_name)
2. Backup Files and Folders
import shutil
import os
from datetime import datetime
def backup_files_and_folders(source, destination):
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
backup_destination = f"{destination}_backup_{timestamp}"
shutil.copytree(source, backup_destination)
source = "/path/to/your/source"
destination = "/path/to/your/destination"
backup_files_and_folders(source, destination)
3. Move Files Based on Extension
import os
import shutil
def move_files_based_on_extension(source_directory, target_directory, extension):
if not os.path.exists(target_directory):
os.makedirs(target_directory)
for filename in os.listdir(source_directory):
if filename.endswith(extension):
shutil.move(os.path.join(source_directory, filename), target_directory)
source_directory = "/path/to/source"
target_directory = "/path/to/target"
extension = ".txt"
move_files_based_on_extension(source_directory, target_directory, extension)
4. Organize Files into Folders by Date
import os
import shutil
from datetime import datetime
def organize_files_by_date(directory):
for filename in os.listdir(directory):
file_path = os.path.join(directory, filename)
if os.path.isfile(file_path):
modification_time = os.path.getmtime(file_path)
date_folder = datetime.fromtimestamp(modification_time).strftime('%Y-%m-%d')
date_folder_path = os.path.join(directory, date_folder)
if not os.path.exists(date_folder_path):
os.makedirs(date_folder_path)
shutil.move(file_path, date_folder_path)
directory = "/path/to/your/directory"
organize_files_by_date(directory)
5. Monitor Directory Changes
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MonitorHandler(FileSystemEventHandler):
def on_modified(self, event):
print(f"Modified: {event.src_path}")
def on_created(self, event):
print(f"Created: {event.src_path}")
def on_deleted(self, event):
print(f"Deleted: {event.src_path}")
directory_to_monitor = "/path/to/your/directory"
event_handler = MonitorHandler()
observer = Observer()
observer.schedule(event_handler, directory_to_monitor, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
6. Send Automatic Emails with Attachments
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
def send_email_with_attachment(smtp_server, port, sender_email, receiver_email, subject,
body, attachment_path, login, password):
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
attachment = open(attachment_path, "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f"attachment; filename=
{os.path.basename(attachment_path)}")
msg.attach(part)
server = smtplib.SMTP(smtp_server, port)
server.starttls()
server.login(login, password)
text = msg.as_string()
server.sendmail(sender_email, receiver_email, text)
server.quit()
smtp_server = "smtp.yourserver.com"
port = 587
sender_email = "your_email@example.com"
receiver_email = "receiver_email@example.com"
subject = "Subject"
body = "Body of the email"
attachment_path = "/path/to/your/attachment"
login = "your_email@example.com"
password = "your_password"
send_email_with_attachment(smtp_server, port, sender_email, receiver_email, subject,
body, attachment_path, login, password)
7. Periodically Download Files from the Internet
import requests
import time
def download_file(url, save_path):
r = requests.get(url)
with open(save_path, 'wb') as f:
f.write(r.content)
url = "http://example.com/file.zip"
save_path = "/path/to/your/save/file.zip"
interval = 3600 # Interval in seconds (e.g., 3600 seconds = 1 hour)
while True:
download_file(url, save_path)
time.sleep(interval)
8. Convert CSV Files to Excel
import pandas as pd
def convert_csv_to_excel(csv_file, excel_file):
df = pd.read_csv(csv_file)
df.to_excel(excel_file, index=False)
csv_file = "/path/to/your/file.csv"
excel_file = "/path/to/your/file.xlsx"
convert_csv_to_excel(csv_file, excel_file)
9. Combine Multiple CSV Files into One
import pandas as pd
import os
def combine_csv_files(directory, output_file):
all_files = [os.path.join(directory, f) for f in os.listdir(directory) if
f.endswith('.csv')]
combined_df = pd.concat([pd.read_csv(f) for f in all_files])
combined_df.to_csv(output_file, index=False)
directory = "/path/to/your/csv/files"
output_file = "/path/to/your/output.csv"
combine_csv_files(directory, output_file)
10. Generate PDF Reports from Data
import pandas as pd
from fpdf import FPDF
def generate_pdf_report(data, output_pdf):
class PDF(FPDF):
def header(self):
self.set_font('Arial', 'B', 12)
self.cell(0, 10, 'PDF Report', 0, 1, 'C')
def footer(self):
self.set_y(-15)
self.set_font('Arial', 'I', 8)
self.cell(0, 10, f'Page {self.page_no()}', 0, 0, 'C')
def chapter_title(self, title):
self.set_font('Arial', 'B', 12)
self.cell(0, 10, title, 0, 1, 'L')
self.ln(10)
def chapter_body(self, body):
self.set_font('Arial', '', 12)
self.multi_cell(0, 10, body)
self.ln()
pdf = PDF()
pdf.add_page()
pdf.chapter_title('Data Report')
pdf.chapter_body(data.to_string())
pdf.output(output_pdf)
data = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [24, 27, 22],
'City': ['New York', 'Los Angeles', 'Chicago']
})
output_pdf = "/path/to/your/report.pdf"
generate_pdf_report(data, output_pdf)