Движущиеся файлы и папки случайно к несуществующим местам

Вы можете попробовать это

with open("./products.csv", mode="r") as products_list1:
    lines1 = products_list1.readlines()
with open("./products2.csv", mode="r") as products_list2:
    lines2 = products_list2.readlines()
with open("./results.csv", mode="a") as results:
    for i in lines1:
        for j in lines2:
            jaccard = get_jaccard_sim(i, j)
            if jaccard >= 0:
                results.writelines(i + "," + j + "\n" + "," + str(jaccard))
5
задан Léo Léopold Hertz 준영 1 May 2009 в 00:39
поделиться

5 ответов

Чтобы избежать этой проблемы, у меня есть привычка всегда добавлять / в конец имен каталогов при использовании cp или mv :

$ touch foo
$ mv foo bar/
mv: cannot move `foo' to `bar/foo': No such file or directory

Без завершающей косой черты mv выполняет операцию переименования файлов. Вы можете обнаружить, что ваши файлы изменили имя.

8
ответ дан 13 December 2019 в 22:16
поделиться

Вы не сможете вернуть ваши файлы, поскольку оболочка расширит ваши файлы, и я считаю, что последний файл в списке теперь будет называться $thing_that_does_not_exist.

Все остальные файлы в списке будут перезаписаны. Таким образом, вы не можете получить их обратно.

РЕДАКТИРОВАТЬ: На моей виртуальной машине с гладкой стенкой (единственная GNU / Linux у меня прямо сейчас!) Я получаю это:

$ mkdir t1
$ mv t1 t2
$ ls
t2/
$ mv t2 t1
$ cd t1
$ touch f1 f2 f3 f4
$ mv f* ../t2
mv: target `../t2' is not a directory
0
ответ дан 13 December 2019 в 22:16
поделиться

Если $thing_that_does_not_exist расширится до нуля (но я не уверен, что это ваша проблема?), То первый mv потерпит неудачу. Вторая команда mv также не будет выполнена, если "files *" не расширится ровно до двух файлов или если последнее имя файла "files *" не расширится до того, чтобы оказаться каталогом. Затем файлы будут перемещены в этот каталог.

Если команда находится в сценарии и вы хотите, чтобы ваш сценарий прерывался при попытке расширить переменную, а она не задана, вы можете использовать модификатор вопросительного знака. Пример:

$ echo ${DISPLAY?}; echo display
:0.0
display
$ echo ${MYTEST?}; echo mytest
bash: MYTEST: parameter null or not set
$

Таким образом, если вы используете

mv folder ${something_that_does_not_exist?}

и что-то не установлено, то 111_35_] не установлено, следующие команды не будут выполняться.

2
ответ дан 13 December 2019 в 22:16
поделиться
mv folder $something_that_does_not_exist

This ought to be an error:

$ mkdir folder
$ mv folder
mv: Insufficient arguments (1)
Usage: mv [-f] [-i] f1 f2
       mv [-f] [-i] f1 ... fn d1
       mv [-f] [-i] d1 d2

The other case depends on what files* matched:

mv files* $something_that_does_not_exist

If the final match is a directory, you will likely find your files there. Otherwise you will have either renamed the first file to be the same as the second or had another error as above.

0
ответ дан 13 December 2019 в 22:16
поделиться

1) You try to move the directory "folder":

mv folder abcde

If "abcde" is an existing directory, it will move "folder" into "abcde". If "abcde" is an existing file, the command will fail. Otherwise it will rename "folder" to "abcde".

2) You try to move some files:

mv files* abcde

If "abcde" is an existing directory, it will move the "files*" into "abcde". Otherwise, if there is only one file matching "files*", it will rename that file to "abcde". Otherwise the command will fail.

0
ответ дан 13 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: