Python Forum
Take user input and split files using 7z in python - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Take user input and split files using 7z in python (/thread-38921.html)



Take user input and split files using 7z in python - askfriends - Dec-10-2022

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.


RE: Take user input and split files using 7z in python - Pedroski55 - Dec-11-2022

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}"



RE: Take user input and split files using 7z in python - snippsat - Dec-11-2022

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')