如何使用Python,读取文本文件&;如果不存在,则写入另一个文件并删除?

如何使用Python,读取文本文件&;如果不存在,则写入另一个文件并删除?,python,openerp,Python,Openerp,请帮我解决这个问题。我的代码如下。我将阅读savefile.txt,并将其写入另一个文本备份文件['attention.csv'] 在这里,读写部分可以完美地工作,但在删除功能中,它会给出下面提到的错误 谢谢 这是我的错误 2013-10-29 09:13:36,708 10046 ERROR 201310281610 openerp.osv.osv: Uncaught exception Traceback (most recent call last): File "/home/priy

请帮我解决这个问题。我的代码如下。我将阅读savefile.txt,并将其写入另一个文本备份文件['attention.csv'] 在这里,读写部分可以完美地工作,但在删除功能中,它会给出下面提到的错误 谢谢

这是我的错误

2013-10-29 09:13:36,708 10046 ERROR 201310281610 openerp.osv.osv: Uncaught exception
Traceback (most recent call last):
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 131, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 197, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 185, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/addons/hr_attendance/hr_attendance.py", line 275, in text_files_upload
    os.remove(f)
TypeError: coercing to Unicode: need string or buffer, file found
2013-10-29 09:13:36,709 10046 ERROR 201310281610 openerp.netsvc: coercing to Unicode: need string or buffer, file found
Traceback (most recent call last):
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/netsvc.py", line 292, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/service/web_services.py", line 626, in dispatch
    res = fn(db, uid, *params)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 188, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 131, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 197, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 185, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/addons/hr_attendance/hr_attendance.py", line 275, in text_files_upload
    os.remove(f)
TypeError: coercing to Unicode: need string or buffer, file found
2013-10-29 09:13:36,714 10046 INFO 201310281610 werkzeug: 127.0.0.1 - - [29/Oct/2013 09:13:36] "POST /web/dataset/call_button HTTP/1.1" 200 -
2013-10-29 09:13:36,708 10046 ERROR 201310281610 openerp.osv.osv: Uncaught exception
Traceback (most recent call last):
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 131, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 197, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 185, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/addons/hr_attendance/hr_attendance.py", line 275, in text_files_upload
    os.remove(f)
TypeError: coercing to Unicode: need string or buffer, file found
2013-10-29 09:13:36,709 10046 ERROR 201310281610 openerp.netsvc: coercing to Unicode: need string or buffer, file found
Traceback (most recent call last):
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/netsvc.py", line 292, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/service/web_services.py", line 626, in dispatch
    res = fn(db, uid, *params)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 188, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 131, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 197, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/osv/osv.py", line 185, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/home/priyan/hr_openerp/openerp-7.0/openerp/addons/hr_attendance/hr_attendance.py", line 275, in text_files_upload
    os.remove(f)
TypeError: coercing to Unicode: need string or buffer, file found
这里还要提到我的savefile.txt[它是由指纹机生成的]

09D043770021301312:1007*0084*02538G

09D022195021301312:0918*0083*:3:5:G

09D021891011301312:0906*0082*:3:5:G

调用
os.remove(f)

请尝试将其放在代码顶部附近:

filename="/home/priyan/Desktop/Store/HR_Module/attendance/savefile.txt"
然后您可以在
open()
remove()
中引用
filename
,例如:

filename="/home/priyan/Desktop/Store/HR_Module/attendance/savefile.txt"

# snip

f = open(filename,'rU')

# snip

f.close()
os.remove(filename)
return False

调用
os.remove(f)

请尝试将其放在代码顶部附近:

filename="/home/priyan/Desktop/Store/HR_Module/attendance/savefile.txt"
然后您可以在
open()
remove()
中引用
filename
,例如:

filename="/home/priyan/Desktop/Store/HR_Module/attendance/savefile.txt"

# snip

f = open(filename,'rU')

# snip

f.close()
os.remove(filename)
return False

调用
os.remove(f)

请尝试将其放在代码顶部附近:

filename="/home/priyan/Desktop/Store/HR_Module/attendance/savefile.txt"
然后您可以在
open()
remove()
中引用
filename
,例如:

filename="/home/priyan/Desktop/Store/HR_Module/attendance/savefile.txt"

# snip

f = open(filename,'rU')

# snip

f.close()
os.remove(filename)
return False

调用
os.remove(f)

请尝试将其放在代码顶部附近:

filename="/home/priyan/Desktop/Store/HR_Module/attendance/savefile.txt"
然后您可以在
open()
remove()
中引用
filename
,例如:

filename="/home/priyan/Desktop/Store/HR_Module/attendance/savefile.txt"

# snip

f = open(filename,'rU')

# snip

f.close()
os.remove(filename)
return False
首先,os.remove()去掉了一些推到参数中的内容。f是文件描述符,包含有关目标文件的信息,但不是文件名。
接下来,我们来讨论f的范围。您将“f”声明为open()的对象,因此它必须包含在with子句中

因此,您应该将其编码如下:

f.close()

os.remove(“attandance.csv”)#需要一个文件名

首先,os.remove()去掉了一些推到参数中的内容。f是文件描述符,包含有关目标文件的信息,但不是文件名。
接下来,我们来讨论f的范围。您将“f”声明为open()的对象,因此它必须包含在with子句中

因此,您应该将其编码如下:

f.close()

os.remove(“attandance.csv”)#需要一个文件名

首先,os.remove()去掉了一些推到参数中的内容。f是文件描述符,包含有关目标文件的信息,但不是文件名。
接下来,我们来讨论f的范围。您将“f”声明为open()的对象,因此它必须包含在with子句中

因此,您应该将其编码如下:

f.close()

os.remove(“attandance.csv”)#需要一个文件名

首先,os.remove()去掉了一些推到参数中的内容。f是文件描述符,包含有关目标文件的信息,但不是文件名。
接下来,我们来讨论f的范围。您将“f”声明为open()的对象,因此它必须包含在with子句中

因此,您应该将其编码如下:

f.close()


os.remove(“attandance.csv”)#需要文件名

请尝试准确找出代码中导致错误的部分并仅发布该部分。请尝试准确找出代码中导致错误的部分并仅发布该部分。请尝试准确找出代码中导致错误的部分并仅发布该部分。请尝试找出确切地说,是哪部分代码导致了错误,请仅发布该部分。很高兴提供帮助。:-)同样值得注意的是,您正在使用
f
读取“savefile.txt”和写入“attention.csv”——这必然会导致一些错误。与答案中的建议相同,然后可能充实变量到
read_filename
read_file
以保存文件对象进行读取,以及
write_filename
write_file
以保存文件对象进行写入?(或
in_文件
/
out_文件
模式也很常见。)感谢亲爱的恐怖海盗肖。有没有在最后一行删除读取的行的想法。如果行不存在,我可以设法删除文件。乐意帮忙。:-)同样值得注意的是,您正在使用
f
读取“savefile.txt”和写入“attention.csv”——这必然会导致一些错误。与答案中的建议相同,然后可能充实变量到
read_filename
read_file
以保存文件对象进行读取,以及
write_filename
write_file
以保存文件对象进行写入?(或
in_文件
/
out_文件
模式也很常见。)感谢亲爱的恐怖海盗肖。有没有在最后一行删除读取的行的想法。如果行不存在,我可以设法删除文件。乐意帮忙。:-)同样值得注意的是,您正在使用
f
读取“savefile.txt”和写入“attention.csv”——这必然会导致一些错误。与答案中的建议相同,然后可能充实变量到
read_filename
read_file
以保存文件对象进行读取,以及
write_filename
write_file
以保存文件对象进行写入?(或
in_文件
/
out_文件
模式也很常见。)感谢亲爱的恐怖海盗肖。有没有在最后一行删除读取的行的想法。如果行不存在,我可以设法删除文件。乐意帮忙。:-)同样值得注意的是,您正在使用
f
读取“savefile.txt”和写入“attention.csv”——这必然会导致一些错误。与答案中的建议相同,然后可能充实变量到
read_filename
read_file
以保存文件对象进行读取,以及
write_filename
write_file
以保存文件对象进行写入?(或
in_文件
/
out_文件
pat