Вы можете попробовать это
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))
Чтобы избежать этой проблемы, у меня есть привычка всегда добавлять / в конец имен каталогов при использовании cp
или mv
:
$ touch foo
$ mv foo bar/
mv: cannot move `foo' to `bar/foo': No such file or directory
Без завершающей косой черты mv
выполняет операцию переименования файлов. Вы можете обнаружить, что ваши файлы изменили имя.
Вы не сможете вернуть ваши файлы, поскольку оболочка расширит ваши файлы, и я считаю, что последний файл в списке теперь будет называться $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
Если $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_] не установлено, следующие команды не будут выполняться.
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.
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.