0

そのファイル内にファイル名を含む Pathfile.dat があります。ファイルのバックアップが存在しない場合は、ファイルのバックアップをコピーしようとしています。

関数 "if files.is_file():" に問題があります。

以下は、私が得ていると思われるエラーです

/home/admin/Pycharm/バックアップ/test1

見つかりません /home/admin/Pycharm/backup/test2

cp が見つかりません: '/home/admin/Pycharm/backup/test1' の後に宛先ファイル オペランドがありません</p>

詳細については、「cp --help」を試してください。

sh: 2: /home/admin/Pycharm/backup/: 見つかりません

sh: 3: _copy: 見つかりません

cp: '/home/admin/Pycharm/backup/test2' の後に宛先ファイル オペランドがありません</p>

詳細については、「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()
4

1 に答える 1

1

問題は完全に明確ではありませんが、cp コマンドで文字列を作成する方法に問題があることは確かです。

os.system メソッドで使用されている文字列を出力すると、次のようになります。

cp -R /yourpathfile/file /home/admin/Pycharm/backup/ /yourpathfile/file _copy 

cp は入力として 2 つの引数 (送信元と送信先) を取ります。2回目にlistを連結するときは、パスで名前を使用していますが、必要なのはファイル名だけです。

また、文字列「/home/admin/Pycharm/backup/」の末尾にスペースがあるため、ファイル名と連結するとエラーが発生します

私はこの方法で 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()
于 2016-11-02T12:55:17.047 に答える