Python Forum
Take user input and split files using 7z in python
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Take user input and split files using 7z in python
#1
Question 
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.
Larz60+ write Dec-11-2022, 12:42 PM:
Rather than using attachment, Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.

Attached Files

.py   zip.py (Size: 5.1 KB / Downloads: 109)
Reply
#2
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}"
Reply
#3
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')
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Class test : good way to split methods into several files paul18fr 4 403 Jan-30-2024, 11:46 AM
Last Post: Pedroski55
  WHILE LOOP NOT RETURNING USER INPUT AFTER ZerroDivisionError! HELP! ayodele_martins1 7 990 Oct-01-2023, 07:36 PM
Last Post: ayodele_martins1
Sad How to split a String from Text Input into 40 char chunks? lastyle 7 1,054 Aug-01-2023, 09:36 AM
Last Post: Pedroski55
  restrict user input to numerical values MCL169 2 869 Apr-08-2023, 05:40 PM
Last Post: MCL169
  Split Bytearray into separate Files by Hex delimter lastyle 5 2,489 Mar-09-2023, 07:49 AM
Last Post: bowlofred
  user input values into list of lists tauros73 3 1,025 Dec-29-2022, 05:54 PM
Last Post: deanhystad
Information How to take url in telegram bot user input and put it as an argument in a function? askfriends 0 1,026 Dec-25-2022, 03:00 PM
Last Post: askfriends
Sad how to validate user input from database johnconar 3 1,837 Sep-11-2022, 12:36 PM
Last Post: ndc85430
  How to split the input taken from user into a single character? mHosseinDS86 3 1,137 Aug-17-2022, 12:43 PM
Last Post: Pedroski55
  Use pexpect to send user input alisha17 0 1,827 May-10-2022, 02:44 AM
Last Post: alisha17

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020