使用 Python 打开现有文件时发生 IOError
运行以下代码:
import os
import datetime
import ftplib
currdate = datetime.datetime.now()
formatdate = currdate.strftime("%m-%d-%Y %H%M")
def log():
fqn = os.uname()[1]
ext_ip = urllib2.urlopen('http://whatismyip.org').read()
log = open ('/Users/admin/Documents/locatelog.txt','w')
log.write(str("Asset: %s " % fqn))
log.write(str("Checking in from IP#: %s" % ext_ip))
smush = str(fqn +' @ ' + formatdate)
os.rename('/Users/admin/Documents/locatelog.txt','/Users/admin/Documents/%s.txt' % smush )
s = ftplib.FTP('10.7.1.71','username','password')
f = open('/Users/admin/Documents/%s.txt' % smush,'r')
s.storbinary("STOR /Users/admin/Documents/%s.txt" % smush,f)
生成以下错误:
ftplib.error_perm: 550 /Users/admin/Documents/678538.local @ 02-24-2010 1301.txt: No such file or directory
我感觉这一行有问题:
s.storbinary("STOR /Users/admin/Documents/%s.txt" % smush,f)
678538 是我正在测试的主机...使用 Mac OS X 10.5 和 Python 2.5.1
Running the following code:
import os
import datetime
import ftplib
currdate = datetime.datetime.now()
formatdate = currdate.strftime("%m-%d-%Y %H%M")
def log():
fqn = os.uname()[1]
ext_ip = urllib2.urlopen('http://whatismyip.org').read()
log = open ('/Users/admin/Documents/locatelog.txt','w')
log.write(str("Asset: %s " % fqn))
log.write(str("Checking in from IP#: %s" % ext_ip))
smush = str(fqn +' @ ' + formatdate)
os.rename('/Users/admin/Documents/locatelog.txt','/Users/admin/Documents/%s.txt' % smush )
s = ftplib.FTP('10.7.1.71','username','password')
f = open('/Users/admin/Documents/%s.txt' % smush,'r')
s.storbinary("STOR /Users/admin/Documents/%s.txt" % smush,f)
Generates the following error:
ftplib.error_perm: 550 /Users/admin/Documents/678538.local @ 02-24-2010 1301.txt: No such file or directory
I have a feeling something is amiss in this line :
s.storbinary("STOR /Users/admin/Documents/%s.txt" % smush,f)
678538 is the host I am testing on...using Mac OS X 10.5 and Python 2.5.1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不应该是
f = open('/Users/admin/Documents/%s.txt' % smush,'r')
吗?注意Users
前面的/
,如果不放第一个
/
,脚本会认为文件的路径是相对于当前的目录(脚本运行的地方)编辑:
我不太熟悉Python(我希望),但不应该是:
s.storbinary('STOR /Users/admin/Documents/ %s.txt' % smush,f)
?插入 smush 的值
在您的示例中,Python 会将您的字符串视为文字,并且您希望使用 %s Edit 2
:目录
/Users/admin/Documents/
存在于你的服务器上吗?如果没有,我认为您必须在复制任何内容之前创建它们。 (因为错误消息是关于某些文件/文件夹丢失的)。您可以先自己创建它们。运行你的脚本。如果文件复制成功,则您可以在脚本中添加目录的创建。
Shouldn't it be
f = open('/Users/admin/Documents/%s.txt' % smush,'r')
? notice the/
in front ofUsers
If you dont put the first
/
, the script will think the path to the file is relative to the current directory (where the script is run from)Edit:
I m not too familiar with Python (I wish) but shouldnt it be:
s.storbinary('STOR /Users/admin/Documents/%s.txt' % smush,f)
?In your example, Python will treat your string as literal and you want to interpolate the value of smush with %s
Edit 2:
Does the directory
/Users/admin/Documents/
exist on your server? If not, I think you will have to create them before copying anything. (Since the error message is about some files/folders missing).You can create them yourself first. Run your script. If the file is copied successfully, then you can add the creation of the directories from within your script.
删除文件名中的所有空格。例如,在
smush = str(fqn +' @ ' + formatdate)
中,您在“@”之前和之后添加了一个空格。你的路径看起来像,当你将它传递给 ftplib 时,它可能有问题。另一种方法是尝试加引号,例如
remove all spaces from file name .eg in
smush = str(fqn +' @ ' + formatdate)
, you are putting a space in front of and after "@". you path looks likeand when you pass it to ftplib, it may have problem. another way is to try putting quotes, eg
编辑:
这个版本有效:问题是我正在写入缓冲区,而不是文件。
Edit:
This version works: Problem was that I was writing to buffer, and not to file.