使用 os rename 根据 python 中的变量重命名文件
Rename files based on variables in python using os rename
我想知道如何将下载的文件从 NWZV1WB
重命名为 HENRY
。现在它下载为 NWZV1WB
wget 看到它,我敢打赌。
重要说明:文件末尾总是有数字
NWZV1WB-1.jpg
NWZV1WB-2.jpg
NWZV1WB-3.jpg
我的代码如下所示:(Henry yuan - 帮助了我)
import wget
import os
import multiprocessing
def run_process(url, output_path):
wget.download(url, out=output_path)
if __name__ == '__main__':
cpus = multiprocessing.cpu_count()
max_pool_size = 4
pool = multiprocessing.Pool(cpus if cpus < max_pool_size else max_pool_size)
base_dir = os.path.dirname(os.path.abspath(__file__))
prefix_list = ["NWZV1WB"]
folder_name_list = ["HENRY"]
download_list = []
name_list = list(range(1, 7))
for index, prefix in enumerate(prefix_list): # return index and item
folder_name = folder_name_list[index] # changed
path = os.path.join(base_dir)
if not os.path.exists(path):
os.mkdir(path)
if not os.path.isdir(path):
exit()
for name in name_list:
download_list.append(['https://example.com/{p}-{n}.jpg'.format(n=name, p=prefix), path])
for url, path in download_list:
pool.apply_async(run_process, args=(url, path, ))
pool.close()
pool.join()
你的问题有点令人困惑,但通过评论线程,我想我拼凑出了你想要做的事情。目前你的输出是:
Old name: New name:
NWZV1WB-1.jpg NWZV1WB-1.jpg
Desired output is:
NWZV1WB-1.jpg HENRY-1.jpg
您的新文件名位于下载列表的 path
变量中。试试这个:
for name in name_list:
path = 'your path'
newfile = path + folder_name +'-{n}.jpg'.format(n=name)
download_list.append(['https://example.com/{p}-{n}.jpg'.format(n=name, p=prefix), newfile])
罪魁祸首在这一行:
path = os.path.join(base_dir)
正如您在 source code 中看到的那样,当只有一个参数连接方法只是 returns 它(这可能不是您想要的)。
def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded."""
path = a
for b in p:
...
return path
Cody already provided you with an answer, I'll just make it a bit cleaner with Python 3.6+ f-strings.
for name in name_list:
file_path = os.path.join(base_dir, f'{folder_name}-{name}.jpg')
download_list.append([f'https://example.com/{prefix}-{name}.jpg', file_path])
我想知道如何将下载的文件从 NWZV1WB
重命名为 HENRY
。现在它下载为 NWZV1WB
wget 看到它,我敢打赌。
重要说明:文件末尾总是有数字
NWZV1WB-1.jpg
NWZV1WB-2.jpg
NWZV1WB-3.jpg
我的代码如下所示:(Henry yuan - 帮助了我)
import wget
import os
import multiprocessing
def run_process(url, output_path):
wget.download(url, out=output_path)
if __name__ == '__main__':
cpus = multiprocessing.cpu_count()
max_pool_size = 4
pool = multiprocessing.Pool(cpus if cpus < max_pool_size else max_pool_size)
base_dir = os.path.dirname(os.path.abspath(__file__))
prefix_list = ["NWZV1WB"]
folder_name_list = ["HENRY"]
download_list = []
name_list = list(range(1, 7))
for index, prefix in enumerate(prefix_list): # return index and item
folder_name = folder_name_list[index] # changed
path = os.path.join(base_dir)
if not os.path.exists(path):
os.mkdir(path)
if not os.path.isdir(path):
exit()
for name in name_list:
download_list.append(['https://example.com/{p}-{n}.jpg'.format(n=name, p=prefix), path])
for url, path in download_list:
pool.apply_async(run_process, args=(url, path, ))
pool.close()
pool.join()
你的问题有点令人困惑,但通过评论线程,我想我拼凑出了你想要做的事情。目前你的输出是:
Old name: New name:
NWZV1WB-1.jpg NWZV1WB-1.jpg
Desired output is:
NWZV1WB-1.jpg HENRY-1.jpg
您的新文件名位于下载列表的 path
变量中。试试这个:
for name in name_list:
path = 'your path'
newfile = path + folder_name +'-{n}.jpg'.format(n=name)
download_list.append(['https://example.com/{p}-{n}.jpg'.format(n=name, p=prefix), newfile])
罪魁祸首在这一行:
path = os.path.join(base_dir)
正如您在 source code 中看到的那样,当只有一个参数连接方法只是 returns 它(这可能不是您想要的)。
def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded."""
path = a
for b in p:
...
return path
Cody already provided you with an answer, I'll just make it a bit cleaner with Python 3.6+ f-strings.
for name in name_list:
file_path = os.path.join(base_dir, f'{folder_name}-{name}.jpg')
download_list.append([f'https://example.com/{prefix}-{name}.jpg', file_path])