Python Forum

Full Version: Take user input and split files using 7z in python
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I am new to all this, i have a python script and want to modify it a little bit but due to my weak basics i cant figure it out, hopefully u guys will help to make it work.
I want to take user input for file split size and based on that input 7z will split the file.
As you might know the basic syntax for 7z looks like this
7z a <filename> -mx0 -v4092m <file_to_be_compressed>
Here -v4092m is the split size, file will be splitted in 4092MBs. My goal is to take user input and put it beside -v

Here is the example code to take user input and store it in SPLIT variable
ASK_SECOND = input("Want to split? 👀\n1. Yes\n2. No\nChoose either Y/N:")
if ASK_SECOND not in ["Y", "N"]:
  print("Wrong input 🤬. Exiting!!!")
  sys.exit()
if ASK_SECOND == "Y":
  SPLIT = input("Enter split size, Ex 500m or 10g")
else:
  print("Noice, Let's go to next step\n\n")

if ASK_SECOND == "Y":
   os.system("cd /bot/files && 7z a -mx=1 -v+'SPLIT'\"{0}\" /bot/zip/\"{1}\" ./\"{2}\" ".format(DESIRED_FILE_NAME,DESIRED_FOLDER_NAME))
In the last above line, i have replaced -v4092m with -v+'SPLIT' is that correct? or im doing it wrong?

For clarity i am attaching full script.
No idea what 7z is, but you could format the string like this perhaps:

split = '5000MB'
foldername = 'summinck'
two = 'summinck_else'
todo = f"cd /bot/files && 7z a -mx=1 -v+{split} /bot/zip/{foldername}/{two}"
Do not use os.system subprocess has taken over that task long ago.
cd in a subprocess use cwd argument to change directory.
Working example that spilt up rain.mp3 in 2-mb files and place files in C:\code.
import subprocess

intput_file = 'rain.mp3'
output_files = 'rain_a.7z'
subprocess.run([r'C:\Program Files\7-Zip\7z.exe', 'a', '-v2m', output_files, intput_file], cwd=r'C:\code')