Где будет создан файл? - PullRequest
       11

Где будет создан файл?

0 голосов
/ 24 сентября 2018
import tempfile

storage_path = os.path.join(tempfile.gettempdir(), 'storage.data')
    with open(STORAGE_PATH, 'w') as f:
    f.write(data)

В каком каталоге будет создан файл?И возможно ли это увидеть там или это невидимо?

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

В данный момент файл не создается.Изучите документацию tempfile , чтобы найти больше информации о функциях модуля, таких как .gettempdir():

. Python ищет стандартный список каталогов, чтобы найти тот, который вызывает пользовательможно создавать файлы. Список:

  1. Каталог, названный переменной среды TMPDIR.

  2. Каталог, названный переменной среды TEMP.

  3. Каталог, названный переменной среды TMP.

  4. Местоположение, зависящее от платформы: В Windows каталоги C: \ TEMP,C: \ TMP, \ TEMP и \ TMP в указанном порядке.На всех других платформах каталоги / tmp, / var / tmp и / usr / tmp в указанном порядке.

  5. В качестве крайней меры текущий рабочий каталог.

0 голосов
/ 24 сентября 2018

Вы только создали строку , ничего более.

Функция tempfile.gettempdir() возвращает строку:

Возвратимя каталога, используемого для временных файлов

Это просто имя.Распечатайте его, если вам нужно знать местоположение в вашей системе, но вы не хотите соблюдать правила, изложенные в документации;есть 3 переменные среды и еще 3 стандартных местоположения, чтобы проверить, где у текущего пользователя есть разрешение на создание файлов.

Далее, os.path.join() принимает строки и выводит строку.На диске ничего не создано для построения этих строк.Это будет зависеть от того, будете ли вы что-то делать с этой строкой (например, вызов os.makedirs() или open()) от того, что будет создано.

Если вы используете простой open() вызовите эту строку, тогда в папке tempfile.gettempdir() создается обычный файл, который виден другим процессам.

Если вам нужно создать временный файл безопасно , поэтому вчтобы злоумышленник не мог получить доступ к файлу или повлиять на то, где он был создан, используйте конструктор tempfile.TemporaryFile() или функцию tempfile.mkstemp() ;в системах UNIX это приведет к появлению файла, которого больше нет в каталоге (файл существует, но не может быть открыт другими процессами).Однако он будет создан в расположении tempfile.gettempdir(), поэтому он будет занимать дисковое пространство в соответствующем разделе диска, в котором находится этот каталог.

0 голосов
/ 24 сентября 2018

С по этой ссылке ...

Список:

  • каталог с именем переменной среды TMPDIR
  • каталог с именем переменной среды TEMP
  • каталог с именем переменной среды TMP
  • расположение для конкретной платформы:

    • в Windows каталоги C:\TEMP, C:\TMP, \TEMP и \TMP в указанном порядке.
    • на всех других платформах, каталоги /tmp, /var/tmp и /usr/tmp, в таком порядке.
    • в качестве крайней меры, текущий рабочий каталог.

Пример из Mac OS:

/var/folders/4x/2rjwjpyn1pn9_0t1r5_m8blr0000gn/T/storage.data

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

...