Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Не обрабатывается файл с пробелом в имени
slaze
сообщение 20.10.2020, 17:58
Сообщение #1


*

Registred
Сообщений: 9
Регистрация: 3.9.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.742
Возраст: 30



Пишу скрипт на lua
Необходимо переместить .csv файл в другую папку
Имя файла содержит пробел, а filecopy и filerename из за этого не работают.
Путь к файлу указываю в [[ ]]
Есть ли выход?

p.s. бд выкачивается автоматом с таким кривым именем(
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 20.10.2020, 19:22
Сообщение #2


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2398
Пользователь №: 18.746



Код
--lua
pathIn  = [["C:\bd\1\fi le.csv"]]
pathOut = [["C:\bd\2\fi le.csv"]]
filecopy (pathIn, pathOut)

или
Код
--lua
pathIn  = [[C:\bd\1\fi le.csv]]
pathOut = [[C:\bd\2\fi le.csv]]
filecopy (string.format("%q", pathIn), string.format("%q", pathOut))


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.10.2020, 2:48
Сообщение #3


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Код
--lua
local ffi = require("ffi")
ffi.cdef[[ bool CopyFileA(const char* lpExistingFileName, const char* lpNewFileName, bool bFailIfExists); ]]

-- скопировать файл
ffi.C.CopyFileA( [[C:\Новый текстовый документ.txt]], [[D:\Новый текстовый документ.txt]], false)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
slaze
сообщение 21.10.2020, 12:55
Сообщение #4


*

Registred
Сообщений: 9
Регистрация: 3.9.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.742
Возраст: 30



Спасибо, что откликнулись, ваши примеры помогли разобраться.

Проблема была в следующем:
я сканировал папку
Код
local resultarray, count = dir (path, "*.csv", "norecursion")

и использовал resultarray[1][1] и resultarray[2][1] в filecopy

Файл без пробела в имени нормально копировался, а с пробелом нет.
В итоге, помогло для второго:
Код
string.format("%q", resultarray[2][1])

Я так понимаю, заэкранировался пробел?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.10.2020, 13:04
Сообщение #5


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
Я так понимаю, заэкранировался пробел?

Нет.
string.format вернул строку в кавычках. Потому что C:\bd\1\fi le.csv и "C:\bd\1\fi le.csv" не одно и тоже. Издержки старого синтаксиса пилота.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
slaze
сообщение 21.10.2020, 13:11
Сообщение #6


*

Registred
Сообщений: 9
Регистрация: 3.9.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.742
Возраст: 30



Ясно. Странно только, что
filedelete нормально обрабатывает C:\bd\1\fi le.csv
а для filecopy и filerename требуется "C:\bd\1\fi le.csv"
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.10.2020, 13:35
Сообщение #7


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
filedelete нормально обрабатывает C:\bd\1\fi le.csv

Потому что только один параметр.
А в filecopy и filerename их два, без кавычек строку C:\bd\1\fi le.csv они читают как C:\bd\1\fi и le.csv.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.4.2024, 21:51
Designed by Nickostyle