I have two files in two different directories, one is '/home/test/first/first.pdf'
, the other is '/home/text/second/second.pdf'
. I use following code to compress them:
import zipfile, StringIO buffer = StringIO.StringIO() first_path = '/home/test/first/first.pdf' second_path = '/home/text/second/second.pdf' zip = zipfile.ZipFile(buffer, 'w') zip.write(first_path) zip.write(second_path) zip.close()
After I open the zip file that I created, I have a home
folder in it, then there are two sub-folders in it, first
and second
, then the pdf files. I don't know how to include only two pdf files instead of having full path zipped into the zip archive. I hope I make my question clear, please help. Thanks.
Use abspath() to Get the Absolute Path in Python Under the Python module os are useful utility functions and properties that manipulate and access file paths under the os. path property. To get the absolute path using this module, call path. abspath() with the given path to get the absolute path.
path. isabs() method in Python is used to check whether the specified path is an absolute path or not. On Unix platforms, an absolute path begins with a forward slash ('/') and on Windows it begins with a backward slash ('\') after removing any potential drive letter.
An absolute path always contains the root element and the complete directory list required to locate the file. For example, /home/sally/statusReport is an absolute path. All of the information needed to locate the file is contained in the path string.
You can determine the absolute path of any file in Windows by right-clicking a file and then clicking Properties. In the file properties first look at the "Location:" which is the path to the file.
The zipfile write() method supports an extra argument (arcname) which is the archive name to be stored in the zip file, so you would only need to change your code with:
from os.path import basename ... zip.write(first_path, basename(first_path)) zip.write(second_path, basename(second_path)) zip.close()
When you have some spare time reading the documentation for zipfile will be helpful.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With