Python 在用户'下下载;s配置文件目录
我很难将刚下载的文件放在脚本所在文件夹以外的任何其他文件夹中。这真的没关系,但我正在尝试用ninite远程更新一些程序。我可以下载文件,但只能下载到脚本所在的文件夹中。我需要在下载nininte.exe之后运行它,并使用一些命令行参数(即silent),我将用批处理脚本传递给它。我想把它放在下载文件夹里。当我在谷歌上搜索它的时候,我只找到了将python安装到特定文件夹的方法 这是到目前为止我的代码Python 在用户'下下载;s配置文件目录,python,Python,我很难将刚下载的文件放在脚本所在文件夹以外的任何其他文件夹中。这真的没关系,但我正在尝试用ninite远程更新一些程序。我可以下载文件,但只能下载到脚本所在的文件夹中。我需要在下载nininte.exe之后运行它,并使用一些命令行参数(即silent),我将用批处理脚本传递给它。我想把它放在下载文件夹里。当我在谷歌上搜索它的时候,我只找到了将python安装到特定文件夹的方法 这是到目前为止我的代码 import urllib ninite = urllib.urlopen("www.down
import urllib
ninite = urllib.urlopen("www.downloadSite.com")
localFile = open('ninite.exe', 'wb')
localFile.write(ninite.read())
ninite.close()
脚本的工作原理与此类似,但当我尝试添加文件夹位置
localFile=open('%userprofile%/Downloads/ninite','wb')
时,它返回一个错误,即没有具有该名称的文件或目录。看起来您想要使用的是%userprofile%
,这是Windows上的一个环境变量open()
不会展开它,而是按字面意思处理它。您应该使用os.environ('userprofile')检索存储在环境变量中的路径,并使用它构造文件的完整路径。像这样的事情应该可以做到:
localFile = open(os.environ['USERPROFILE']+'/ninite.exe', 'wb')
看起来您要使用的是
%userprofile%
,它是Windows上的一个环境变量open()
不会展开它,而是按字面意思处理它。您应该使用os.environ('userprofile')检索存储在环境变量中的路径,并使用它构造文件的完整路径。像这样的事情应该可以做到:
localFile = open(os.environ['USERPROFILE']+'/ninite.exe', 'wb')
您可以使用展开目标目录名称中的环境变量,如%userprofile%
,并使用下载文件:
#!/usr/bin/env python
import os
import urllib
url = "https://example.com/path" # where to get the file from
dest_dir = os.path.expandvars('%userprofile%/Downloads/ninite') # where to put it
# make the directories (recursively)
try:
os.makedirs(dest_dir)
except OSError: # ignore errors
pass
# download the file
urllib.urlretrieve(url, os.path.join(dest_dir, 'ninite.exe'))
您可以使用展开目标目录名称中的环境变量,如%userprofile%
,并使用下载文件:
#!/usr/bin/env python
import os
import urllib
url = "https://example.com/path" # where to get the file from
dest_dir = os.path.expandvars('%userprofile%/Downloads/ninite') # where to put it
# make the directories (recursively)
try:
os.makedirs(dest_dir)
except OSError: # ignore errors
pass
# download the file
urllib.urlretrieve(url, os.path.join(dest_dir, 'ninite.exe'))
看起来您正在尝试使用Windows等效的
~/Downloads/ninite
。库函数将在这里帮助您。您可以这样做:
import os.path
os.path.expanduser('~/Downloads/ninite.exe')
这将返回文件的完整路径。虽然tilde是Unix的东西,但在Windows上它将替换您的
%userprofile%
环境变量。看起来您正在尝试使用Windows中与~/Downloads/ninite
等效的工具。库函数将在这里帮助您。您可以这样做:
import os.path
os.path.expanduser('~/Downloads/ninite.exe')
这将返回文件的完整路径。虽然tilde是Unix的东西,但在Windows上,它将替换您的
%userprofile%
环境变量。您可能需要先使用它。另外,%userprofile
看起来可疑。不要使用file1.write(file2.read())
。如果源和目标位于不同的文件系统上,则使用类似或其中一个。os.rename()
将不起作用<不过,代码>shutil应该没问题。也许你需要先做。另外,%userprofile
看起来可疑。不要使用file1.write(file2.read())
。如果源和目标位于不同的文件系统上,则使用类似或其中一个。os.rename()
将不起作用shutil
应该没问题。我认为这正是我想要的。但现在当我运行脚本时,我得到了\u Environ实例没有调用方法。在这个错误上有点迷茫?@user3335541:replace()
为[]
:value=os.environ['envvar']
您也可以用替换+
。我认为这是我所寻找的正确的方向。但现在当我运行脚本时,我得到了\u Environ实例没有调用方法。对那个错误有点迷茫?@user3335541:replace()
为[]
:value=os.environ['envvar']
您也可以将+
替换为。这个答案非常有效谢谢大家的帮助。这个答案非常有效谢谢大家的帮助。