R: file.path не выводит правильный подкаталог

У меня есть каталог под названием «DIR». В этом каталоге находятся две папки, называемые «программами», которые содержат сценарии R и «данные», которые содержат файлы .csv, которые я хочу загрузить.

Мой рабочий каталог установлен на «C:/ Пользователь/DIR/programs/processing «и я хочу загрузить файл с именем» flowers.csv «из папки» data «. («C:/User/DIR/data/flowers.csv»).

Я пытаюсь использовать функцию file.path вместе с "../" для загрузки из папки данных, но он продолжает указывать неправильный путь к файлу.

  dir.root  

Дает мне

 > dir.in [1]" \\ C:/User/ DIR/programs/processing/../raw " 

Вместо того, что я хочу " \\ C:/User/DIR/raw/"

Когда я использую

  read.csv ("../raw/flowers.csv")  

Я получаю сообщение об ошибке

  Ошибка в файле (файл, "rt"): не удается открыть соединение. Дополнительно: Предупреждение: в файле  (файл, "rt"): невозможно открыть файл '../raw/flowers.csv': нет такого файла или каталога  

Кто-нибудь может помочь мне понять, что происходит ? Спасибо!


Используйте normalizePath для преобразования пути к файлу в каноническую форму.

  dir.in  


Вы устанавливаете dir.root на неправильный путь. setwd () не возвращает заданный вами путь, он возвращает предыдущий путь (так что вы можете вернуться к нему позже, если хотите).

Используйте это код, чтобы делать то, что вы хотите:

  olddir  

Вы также можете вызвать normalizePath (dir.in) как @chandra сказал, но это не обязательно.



ansible.builtin.file — Управление файлами и свойствами файлов — Ansible Документация

Примечание

Этот модуль является частью ansible-base и включен в все установки Ansible. В большинстве случаев вы можете использовать короткий файл имени модуля даже без указания ключевого слова collections: . Несмотря на это, мы рекомендуем вам использовать FQCN для упрощения ссылки на запланированную документацию и во избежание конфликта с другими коллекциями который может иметь то же имя модуля.

  • Установить атрибуты файлов, символических ссылок или каталогов.

  • В качестве альтернативы удалите файлы, символические ссылки или каталоги.

  • Многие другие модули поддерживают те же параметры, что и модуль file , включая, и ansible.builtin.assemble.

  • Для целей Windows используйте вместо этого модуль.

Параметр Choices/Defaults Комментарии

access_time

string
добавлен в версии 2.7 ansible.builtin
Этот параметр указывает время, в течение которого должно выполняться доступ к файлу. должен быть установлен на.
Должен быть preserve , когда никаких изменений не требуется, ГГГГММДДЧЧММ.SS e> при использовании формата времени по умолчанию или сейчас .
По умолчанию None , что означает, что сохраняет используется по умолчанию для state = [file, directory, link, hard] , а now — по умолчанию для state = touch .

access_time_format

строка
добавлена ​​в 2.7 в ansible.builtin
По умолчанию:
«% Y% m% d% H% M.% S»
При использовании с access_time указывает формат времени, который необходимо использовать.
На основе формата Python по умолчанию (см. документ time.strftime).

атрибуты

string
добавлены в 2.3 Ansible.builtin
Атрибуты, которые должен иметь результирующий файл или каталог.
Чтобы получить поддерживаемые флаги, посмотрите страницу руководства для chattr в целевой системе.
T его строка должна содержать атрибуты в том же порядке, что и атрибут, отображаемый lsattr .
Оператор = предполагается как по умолчанию, иначе в строку должны быть включены операторы + или - .
aliases: attr

follow

логическое
добавлен в ansible.builtin 1.8
    Варианты:
  • no
  • да
Это указывает на то, что по ссылкам файловой системы, если они существуют, следует переходить.
В предыдущих версиях до Ansible 2.5 это было no по умолчанию.

force

логическое
    Варианты:
  • нет
  • yes
Принудительное создание символических ссылок в двух случаях: исходный файл не существует ( но появится позже); место назначения существует и является файлом (поэтому нам нужно отменить связь с файлом path и вместо него создать символическую ссылку на файл src ).

group

string
Имя группы, которая должна владеть файлом/каталогом, которое будет передано в chown .

режим

raw
Разрешения, которые должен иметь полученный файл или каталог.
Для тех, кто привык к /usr/bin/chmod помните, что режимы на самом деле являются восьмеричными числами. Вы должны либо добавить начальный ноль, чтобы синтаксический анализатор Ansible YAML знал, что это восьмеричное число (например, 0644 или 01777 ), либо заключить его в кавычки (например, '644' или '1777' ), поэтому Ansible получает строку и может выполнять собственное преобразование из строки в число.
Предоставление Ansible число без соблюдения одного из этих правил будет иметь десятичное число, что приведет к неожиданным результатам.
Начиная с Ansible 1.8, режим может быть указан как символьный (например, u + rwx или u = rw, g = r, o = r ).

Время_ модификации

строка
добавлено в версии 2.7 ansible.builtin
Этот параметр указывает время, в которое должно быть установлено время изменения файла.
Должно быть сохранить , если модификация не требуется, ГГГГММДДЧЧММ.SS при использовании формата времени по умолчанию или сейчас de>.
По умолчанию — Нет, что означает, что preserve является значением по умолчанию для state = [file, directory, link, hard] и now по умолчанию для state = touch .

Modification_time_format

string
добавлено в версии 2.7 ansible.builtin
По умолчанию:
«% Y% m% d% H% M.% S»
При использовании с Modification_time указывает формат времени, который должен использоваться.
На основе формата Python по умолчанию (см. time.strftime doc).

owner

строка
Имя пользователя, которому должен принадлежать файл/каталог, которое будет передано в chown .

путь

путь/обязательно
Путь к управляемому файлу.
псевдонимы: dest, name

рекурсивный

boolean
добавлен в версии 1.1 ansible.builtin
    Варианты:
  • нет
  • да
Рекурсивно устанавливать указанные атрибуты файла для содержимого каталога.
Это применимо только когда state установлен в directory .

selevel

string
Часть уровня контекста файла SELinux.
Это атрибут MLS/MCS, иногда известный как range .
Если задано значение _default , он будет использовать часть политики level , если она доступна.

serole

string
Роль часть контекста файла SELinux.
Wh en установлено значение _default , он будет использовать часть политики role , если она доступна.

setype

string
Типовая часть контекста файла SELinux.
Если установлено значение _default , будет использоваться введите часть политики, если она есть.
seuser
string
Пользовательская часть контекста файла SELinux.
По умолчанию он использует Политика system , если применимо.
Если установлено значение _default , будет использоваться user часть политики, если таковая имеется.

src

путь
Путь к файлу, на который нужно создать ссылку.
Это применимо только к state = link и state = hard .
Для st ate = link , это также будет принимать несуществующий путь.
Относительные пути указываются относительно создаваемого файла ( path ), который является как команда Unix ln -s SRC DEST обрабатывает относительные пути.

состояние

строка
    Варианты:
  • отсутствует
  • каталог
  • файл
  • жестко
  • ссылка
  • touch
Если отсутствует , каталоги будут удаляться рекурсивно, а файлы или символические ссылки не будут связаны. В случае каталога, если объявлен diff , вы увидите удаленные файлы и папки, перечисленные в разделе path_contents . Обратите внимание, что absent не приведет к сбою file , если путь не существует, так как состояние не изменилось..
Если directory , будут созданы все промежуточные подкаталоги, если они не существуют. Начиная с Ansible 1.7 они будут созданы с предоставленными разрешениями.
Если file , без каких-либо других параметров, это работает в основном как ‘stat’ и вернет текущий состояние пути . Даже с другими параметрами (например, mode ) файл будет изменен, но НЕ будет создан, если он не существует; см. значение touch или модуль ansible.builtin.copy или ansible.builtin.template, если вы хотите такого поведения.
Если hard , жесткая ссылка будет создана или изменена.
Если link , символьная ссылка будет создана или изменена.
Если коснуться (новое в 1.4), будет создан пустой файл, если путь не существует, в то время как существующий файл или каталог получит обновленный время доступа к файлу и изменения (аналогично тому, как touch работает из командной строки).

unsafe_writes

boolean
добавлен в ansible.builtin 2.2
    Варианты:
  • нет
  • да
Влияние на то, когда использовать атомарную операцию для предотвращения повреждения данных или несогласованного чтения из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвратить повреждение данных или несогласованное чтение из целевых файлов, но иногда системы настроены или просто сломаны способами, которые предотвращают это. Одним из примеров являются файлы, смонтированные в докере, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом.
Эта опция позволяет Ansible вернуться к небезопасным методам обновления файлов, когда операции завершаются ошибкой (однако это не заставляет Ansible выполнять небезопасную запись).
ВАЖНО! Небезопасные записи могут быть связаны с условиями гонки и могут привести к повреждению данных.

Примечание

  • Поддерживает check_mode .

См. также

Официальная документация по модулю ansible.builtin.assemble .

Официальная документация по модулю ansible.builtin.copy .

Официальная документация по модулю ansible.builtin.stat .

Официальная документация по модулю ansible.builtin.template .

Официальная документация по модулю ansible.windows.win_file .

 - имя: изменить владельца файла, группу и разрешения ansible.builtin.file:  путь:/etc/foo. conf владелец: foo group: foo mode: '0644' - name: дать небезопасные разрешения существующему файлу ansible.builtin.file: path:/work owner: root group: root mode: '1777' - name: Create a symbolic link  ansible.builtin.file: src:/file/to/link/to dest:/path/to/symlink owner: foo group: foo state: link- name: Create две жесткие ссылки ansible.builtin.file: src: '/ tmp/{{item.src}} 'dest:' {{item.dest}} 'состояние: жесткий цикл: - {src: x, dest: y} - {src: z, dest: k} - name: Touch  файл, используя символические режимы для установки разрешений (эквивалент 0644) ansible.builtin.file: path:/etc/foo.conf state: touch mode: u = rw, g = r, o = r- name: Touch the  тот же файл, но добавить/удалить некоторые права доступа ansible.builtin.file: path:/etc/foo.conf state: touch mode: u + rw, g-wx, o-rwx- name: снова коснитесь того же файла, но выполните  не менять время, это делает задачу идемпотентной ansible.builtin.file: path:/etc/foo.conf state: touch mode: u + rw, g-wx, o-rwx modify_time: preserve access_time: preserve- name: Create a directory  если  он не существует ansible.builtin.file: путь:/etc/some_directory state: directory mode: '0755'- name: Обновить модификацию и время доступа к данному файлу ansible.builtin.file: path:/etc/some_file state: file  Modification_time: now access_time: now- name: Установить время доступа в секундах от значения эпохи ansible.builtin.file: path:/etc/another_file state: file access_time: '{{"% Y% m% d% H% M.  % S "|  strftime (stat_var.stat.atime)}} '- name: Рекурсивно изменить владельца каталога ansible.builtin.file: path:/etc/foo state: directory recurse: yes owner: foo group: foo- name: Remove file (  удалить файл) ansible.builtin.file: путь:/etc/foo.txt state: absent- name: Рекурсивно удалить каталог ansible.builtin.file: path:/etc/foo state: absent 

Общие возвращаемые значения задокументированы, следующие поля являются уникальными для этого модуля:

Ключ Возвращено Описание

dest

строка
state = touch, state = hard, state = link
Целевой файл/путь, равный значению, переданному в путь .

Образец:
/path/to/file.txt

путь

строка
state = absent, state = directory, state = file
Destina ции файл/путь, равный значению, переданному в путь .

Пример:
/path/to/file.txt
Оцените статью
clickpad.ru
Добавить комментарий