os.rename() 错误不存在这样的文件或文件夹
os.rename() error no such file or folder exists
我一直在尝试创建一个 python 脚本,将我的数据记录到一个名为 'log.dat' 的 .dat 文件中,并且每隔一分钟,将 log.dat 重命名为其他名称,然后开始编写传入的日志数据到一个新的空 log.dat 文件。
但是我的 os.rename 行正在创建一个错误,我一直在尝试调试它很长时间,但它没有帮助。我一直收到同样的错误
Error : Traceback (most recent call last):rov sel.:0; homenet:0(-1); current net:0;
File "tracer.py", line 56, in <module>
main()
File "tracer.py", line 44, in main
os.rename("/home/debian/fname", "/home/debian/log-{}.dat".format(time.strftime("%y%m%d%H%M%S")))
OSError: [Errno 2] No such file or directory
这是我的代码:
from __future__ import print_function
def main():
#!/usr/bin/python
# get lines of text from serial port, save them to a file
import serial, io
import time
import os
s = open('log.dat', 'w')
log = time.strftime("%Y%m%d-%H%M%S")
s = open(log + '.dat', 'w')
delete = 'cat /dev/null > log.dat'
addr = '/dev/ttyACM0' # serial port to read data from
baud = 9600 # baud rate for serial port
fname = 'log.dat' # log file to save data in
fmode = 'a' # log file mode = append
with serial.Serial(addr,9600) as pt, open(fname,fmode) as outf:
spb = io.TextIOWrapper(io.BufferedRWPair(pt,pt,1),
encoding='ascii', errors='ignore', newline='\r',line_buffering=$
spb.readline()
while (1):
now = time.time()
with open(fname,fmode) as outf:
while (time.time() - now) < 60:
x = spb.readline() # read one line of text from serial$
print (x,end='') # echo line of text on-screen
outf.write(x) # write line of text to file
outf.flush() # make sure it actually gets written
os.rename("/home/debian/fname", "/home/debian/log-
{}.dat".format(time.strftime("%y%m%d%H%M%S")))
if __name__ == '__main__':
main()
我不明白我在这里做错了什么。
非常感谢任何建议或帮助。
尝试:
os.rename("/home/debian/"+fname, "/home/debian/log-
{}.dat".format(time.strftime("%y%m%d%H%M%S")))
或:
os.rename("/home/debian/log.dat", "/home/debian/log-
{}.dat".format(time.strftime("%y%m%d%H%M%S")))
您没有在 open
调用中指定绝对路径;我们不知道当前目录是否真的是/home/debian
;因此在 os.rename
中使用绝对路径是不明智的。而是写
os.rename(fname, "log-{}.dat".format(time.strftime("%y%m%d%H%M%S")))
使用与 open
相同的名称。
我一直在尝试创建一个 python 脚本,将我的数据记录到一个名为 'log.dat' 的 .dat 文件中,并且每隔一分钟,将 log.dat 重命名为其他名称,然后开始编写传入的日志数据到一个新的空 log.dat 文件。
但是我的 os.rename 行正在创建一个错误,我一直在尝试调试它很长时间,但它没有帮助。我一直收到同样的错误
Error : Traceback (most recent call last):rov sel.:0; homenet:0(-1); current net:0;
File "tracer.py", line 56, in <module>
main()
File "tracer.py", line 44, in main
os.rename("/home/debian/fname", "/home/debian/log-{}.dat".format(time.strftime("%y%m%d%H%M%S")))
OSError: [Errno 2] No such file or directory
这是我的代码:
from __future__ import print_function
def main():
#!/usr/bin/python
# get lines of text from serial port, save them to a file
import serial, io
import time
import os
s = open('log.dat', 'w')
log = time.strftime("%Y%m%d-%H%M%S")
s = open(log + '.dat', 'w')
delete = 'cat /dev/null > log.dat'
addr = '/dev/ttyACM0' # serial port to read data from
baud = 9600 # baud rate for serial port
fname = 'log.dat' # log file to save data in
fmode = 'a' # log file mode = append
with serial.Serial(addr,9600) as pt, open(fname,fmode) as outf:
spb = io.TextIOWrapper(io.BufferedRWPair(pt,pt,1),
encoding='ascii', errors='ignore', newline='\r',line_buffering=$
spb.readline()
while (1):
now = time.time()
with open(fname,fmode) as outf:
while (time.time() - now) < 60:
x = spb.readline() # read one line of text from serial$
print (x,end='') # echo line of text on-screen
outf.write(x) # write line of text to file
outf.flush() # make sure it actually gets written
os.rename("/home/debian/fname", "/home/debian/log-
{}.dat".format(time.strftime("%y%m%d%H%M%S")))
if __name__ == '__main__':
main()
我不明白我在这里做错了什么。 非常感谢任何建议或帮助。
尝试:
os.rename("/home/debian/"+fname, "/home/debian/log-
{}.dat".format(time.strftime("%y%m%d%H%M%S")))
或:
os.rename("/home/debian/log.dat", "/home/debian/log-
{}.dat".format(time.strftime("%y%m%d%H%M%S")))
您没有在 open
调用中指定绝对路径;我们不知道当前目录是否真的是/home/debian
;因此在 os.rename
中使用绝对路径是不明智的。而是写
os.rename(fname, "log-{}.dat".format(time.strftime("%y%m%d%H%M%S")))
使用与 open
相同的名称。