如何根据脚本位置下载图像并将其放在新目录中?

How to download an image and put it in a new directory based on the script location?

假设我有这个代码:

import urllib.request

url = 'https://docs.python.org/3/_static/py.png'
file_name = url.split('/')[::-1][0]
urllib.request.urlretrieve(url, file_name)

当此代码运行时,它将下载py.png并将其命名为py.png,并存储在.py文件的相同位置(代码位于)

我的问题是,如何对其进行编码,以便它在基于 .py[ 的新文件夹中下载 py.png =29=]位置。

假设我的 .py 文件位置是 desktop\mypylocation\image.py

我想创建一个新文件夹并将图像存储在新文件夹中,以便图像的路径为 desktop\mypylocation\new_folder\py.png

你可以使用

import os
current_folder=os.getcwd()

如果您还没有更改目录或者您不是 运行 来自不同目录的脚本。否则,您可以通过

找到脚本位置
import sys
current_folder=sys.path[0]

最后,您可以通过

创建一个新文件夹
os.mkdir(current_folder+'my_new_folder')

在你的情况下应该是这样的:

import sys
import os
import urllib.request

# Define URL
url = 'https://docs.python.org/3/_static/py.png'

# Figure out folder
curr_folder=sys.path[0]

# Create folder
os.mkdir(curr_folder+'/out')

# Get filename
file_name =curr_folder+'/out/'+url.split('/')[::-1][0]
urllib.request.urlretrieve(url, file_name)

希望这对您有所帮助。

要获取 python 文件的位置,请使用

import os

path_of_py_file = os.path.abspath(os.path.dirname(__file__))

在那里创建一个新文件夹

os.mkdir(os.path.join(path_of_py_file, 'folder name'))

函数os.path.join用正确的分隔符连接部分路径(并确保只有一个),这比假设分隔符是反斜杠连接字符串要好