如果文件不存在,则在目录中备份文件
Backuping files in a dir if they don't already exists
我有一个 Pathfile.dat 文件中包含文件名,
如果一个文件不存在,我正在尝试复制文件的备份
我在使用函数“if files.is_file():”时遇到问题
以下是我似乎遇到的错误
/home/admin/Pycharm/backup/test1
未找到
/home/admin/Pycharm/backup/test2
未找到
cp: 在‘/home/admin/Pycharm/backup/test1’
之后缺少目标文件操作数
尝试 'cp --help' 了解更多信息。
sh: 2: /home/admin/Pycharm/backup/: 未找到
sh: 3: _copy: 未找到
cp: 在‘/home/admin/Pycharm/backup/test2’之后缺少目标文件操作数
尝试 'cp --help' 了解更多信息。
sh: 2: /home/admin/Pycharm/backup/: 未找到
sh: 3: _copy: 未找到
import os
from pathlib import Path
import logging
filename = 'config.dat'
Configlist = []
def createlist():
with open(filename) as f:
for item in f:
Configlist.append(os.path.abspath(item))
def copy():
for list in Configlist:
print(list)
files = Path(list)
if files.is_file():
print("Found")
else:
print("not Found")
os.system("cp -R " + list + " /home/admin/Pycharm/backup/ " + list + "_copy ")
createlist()
copy()
问题还不是很清楚,但你使用 cp 命令创建字符串的方式肯定有问题
如果打印 os.system 方法中使用的字符串,您会看到类似这样的内容:
cp -R /yourpathfile/file /home/admin/Pycharm/backup/ /yourpathfile/file _copy
cp 将两个参数作为输入(源和目标)
当您第二次连接 list 时,您将名称与路径一起使用,但您只需要文件名。
在字符串“/home/admin/Pycharm/backup/”的末尾还有一个 space 所以如果你用文件名连接它会给你一个错误
我试过以这种方式调整 cp 部分,这似乎有效:
import os
from pathlib import Path
import logging
filename = 'config.dat'
Configlist = []
def createlist():
with open(filename) as f:
for item in f:
Configlist.append((os.path.abspath(item), item))
def copy():
for (list,name) in Configlist:
files = Path(list)
if files.is_file():
print("Found")
else:
print("not Found")
string = "cp -R " + str(list[:-1]) + " /home/admin/Pycharm/backup/"+name[:-1] + "_copy "
print(string)
os.system(string)
createlist()
copy()
我有一个 Pathfile.dat 文件中包含文件名, 如果一个文件不存在,我正在尝试复制文件的备份
我在使用函数“if files.is_file():”时遇到问题
以下是我似乎遇到的错误
/home/admin/Pycharm/backup/test1
未找到 /home/admin/Pycharm/backup/test2
未找到 cp: 在‘/home/admin/Pycharm/backup/test1’
之后缺少目标文件操作数尝试 'cp --help' 了解更多信息。
sh: 2: /home/admin/Pycharm/backup/: 未找到
sh: 3: _copy: 未找到
cp: 在‘/home/admin/Pycharm/backup/test2’之后缺少目标文件操作数
尝试 'cp --help' 了解更多信息。
sh: 2: /home/admin/Pycharm/backup/: 未找到
sh: 3: _copy: 未找到
import os
from pathlib import Path
import logging
filename = 'config.dat'
Configlist = []
def createlist():
with open(filename) as f:
for item in f:
Configlist.append(os.path.abspath(item))
def copy():
for list in Configlist:
print(list)
files = Path(list)
if files.is_file():
print("Found")
else:
print("not Found")
os.system("cp -R " + list + " /home/admin/Pycharm/backup/ " + list + "_copy ")
createlist()
copy()
问题还不是很清楚,但你使用 cp 命令创建字符串的方式肯定有问题
如果打印 os.system 方法中使用的字符串,您会看到类似这样的内容:
cp -R /yourpathfile/file /home/admin/Pycharm/backup/ /yourpathfile/file _copy
cp 将两个参数作为输入(源和目标) 当您第二次连接 list 时,您将名称与路径一起使用,但您只需要文件名。
在字符串“/home/admin/Pycharm/backup/”的末尾还有一个 space 所以如果你用文件名连接它会给你一个错误
我试过以这种方式调整 cp 部分,这似乎有效:
import os
from pathlib import Path
import logging
filename = 'config.dat'
Configlist = []
def createlist():
with open(filename) as f:
for item in f:
Configlist.append((os.path.abspath(item), item))
def copy():
for (list,name) in Configlist:
files = Path(list)
if files.is_file():
print("Found")
else:
print("not Found")
string = "cp -R " + str(list[:-1]) + " /home/admin/Pycharm/backup/"+name[:-1] + "_copy "
print(string)
os.system(string)
createlist()
copy()