Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python打开现有文件时出错_Python_Macos_File Io_Ftp_Ftplib - Fatal编程技术网

使用Python打开现有文件时出错

使用Python打开现有文件时出错,python,macos,file-io,ftp,ftplib,Python,Macos,File Io,Ftp,Ftplib,运行以下代码: 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 ('/Us

运行以下代码:

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

它不应该是
f=open('/Users/admin/Documents/%s.txt'%smush,'r')
?注意
/
用户前面的
//code>

如果不放置第一个
/
,脚本将认为文件的路径相对于当前目录(脚本运行的起始目录)

编辑

我不太熟悉Python(我希望如此),但它不应该是:

s.storbinary('STOR/Users/admin/Documents/%s.txt'%smush,f)

在您的示例中,Python将把您的字符串视为文本,并且您希望用%s插入smush的值

编辑2

服务器上是否存在目录
/Users/admin/Documents/
?如果没有,我认为您必须在复制任何内容之前创建它们。(因为错误消息是关于缺少某些文件/文件夹)


您可以先自己创建它们。运行脚本。如果文件复制成功,则可以从脚本中添加目录的创建。

是否应该
f=open('/Users/admin/Documents/%s.txt'%smush,'r')
?注意
/
用户前面的
//code>

如果不放置第一个
/
,脚本将认为文件的路径相对于当前目录(脚本运行的起始目录)

编辑

我不太熟悉Python(我希望如此),但它不应该是:

s.storbinary('STOR/Users/admin/Documents/%s.txt'%smush,f)

在您的示例中,Python将把您的字符串视为文本,并且您希望用%s插入smush的值

编辑2

服务器上是否存在目录
/Users/admin/Documents/
?如果没有,我认为您必须在复制任何内容之前创建它们。(因为错误消息是关于缺少某些文件/文件夹)


您可以先自己创建它们。运行脚本。如果文件复制成功,则可以从脚本中添加目录的创建。

删除文件名中的所有空格。例如,在
smush=str(fqn+'@'+formatdate)
中,您将在“@”前面和后面放置空格。你的路径看起来像

/Users/admin/Documents/something @ something
当您将其传递给ftplib时,它可能有问题。另一种方法是尝试引用,例如

s.storbinary("STOR '/Users/admin/Documents/%s.txt'" % smush,f)

删除文件名中的所有空格。例如在
smush=str(fqn+'@'+formatdate)
中,您将在“@”前面和后面放置一个空格。你的路径看起来像

/Users/admin/Documents/something @ something
当您将其传递给ftplib时,它可能有问题。另一种方法是尝试引用,例如

s.storbinary("STOR '/Users/admin/Documents/%s.txt'" % smush,f)

编辑:

这个版本可以工作:问题是我写的是缓冲区,而不是文件

import os
import urllib2
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()
    smush = str(fqn + formatdate)
    s = ftplib.FTP('10.7.1.71','username','password')
    f = open('/Users/admin/Documents/%s.txt' % smush,'w')
    f.write(str("Asset: %s " % fqn))
    f.write('\n')
    f.write(str("Checking in from IP#: %s" % ext_ip))
    f.write('\n')
    f.write(str("On: %s" % formatdate))
    f.close
    f = open('/Users/admin/Documents/%s.txt' % smush,'rb')
    s.storbinary('STOR %s.txt' % smush , f)
    s.close
    f.close

编辑:

这个版本可以工作:问题是我写的是缓冲区,而不是文件

import os
import urllib2
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()
    smush = str(fqn + formatdate)
    s = ftplib.FTP('10.7.1.71','username','password')
    f = open('/Users/admin/Documents/%s.txt' % smush,'w')
    f.write(str("Asset: %s " % fqn))
    f.write('\n')
    f.write(str("Checking in from IP#: %s" % ext_ip))
    f.write('\n')
    f.write(str("On: %s" % formatdate))
    f.close
    f = open('/Users/admin/Documents/%s.txt' % smush,'rb')
    s.storbinary('STOR %s.txt' % smush , f)
    s.close
    f.close

“完整”源显示/,但一行代码不显示。看起来代码段是正在运行的,但完整的源代码是所需的。@ccheneson谢谢。我确实忘记了斜杠,但我的另一个错误是ftplib命令。似乎在做同样的事情?(我编辑了这个问题以反映变化)谢谢你的眼光很好。格式化工作正常,但仍会抛出一个错误(更新如上)。我想我把ftplib搞乱了……完整的源代码显示了/,但一行代码没有。看起来代码段是正在运行的,但完整的源代码是所需的。@ccheneson谢谢。我确实忘记了斜杠,但我的另一个错误是ftplib命令。似乎在做同样的事情?(我编辑了这个问题以反映变化)谢谢你的眼光很好。格式化工作正常,但仍会抛出一个错误(更新如上),我想我把ftplib搞砸了。。。