Как создать временный файл (для записи в) в C#? [дубликат]

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

. Для одного значения наиболее простым (читаемым человеком), вероятно, является:

df.loc[df['column_name'] == some_value]

Для списков значений вы также можете использовать:

df.loc[df['column_name'].isin(some_values)]

Например,

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
               'B': 'one one two three two two one three'.split(),
               'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
#      A      B  C   D
# 0  foo    one  0   0
# 1  bar    one  1   2
# 2  foo    two  2   4
# 3  bar  three  3   6
# 4  foo    two  4   8
# 5  bar    two  5  10
# 6  foo    one  6  12
# 7  foo  three  7  14

print(df.loc[df['A'] == 'foo'])

дает

     A      B  C   D
0  foo    one  0   0
2  foo    two  2   4
4  foo    two  4   8
6  foo    one  6  12
7  foo  three  7  14

Если у вас есть несколько критериев, которые вы хотите выбрать, вы можете поместить их в список и использовать 'isin':

print(df.loc[df['B'].isin(['one','three'])])

дает

      A      B  C   D
0  foo    one  0   0
1  bar    one  1   2
3  bar  three  3   6
6  foo    one  6  12
7  foo  three  7  14

Обратите внимание, однако, что если вы хотите сделать это много раз, более эффективно сделать A сначала индекс, а затем используйте df.loc:

df = df.set_index(['A'])
print(df.loc['foo'])

дает

  A      B  C   D
foo    one  0   0
foo    two  2   4
foo    two  4   8
foo    one  6  12
foo  three  7  14
15
задан Azat Ibrakov 18 September 2018 в 14:05
поделиться

3 ответа

Путь. GetTempFileName и Путь. GetTempPath. Тогда можно использовать эта ссылка к зашифрованным данным чтения-записи в файл.

Примечание.NET не является лучшей платформой для критических приложений защиты. Необходимо быть хорошо сведущими в том, как CLR работает для предотвращения некоторых ловушек, которые могли бы представить критические данные хакерам.

Редактирование: О состоянии состязания... Вы могли использовать GetTempPath, затем создать временное имя файла при помощи

Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Guid.NewGuid().ToString(), ".TMP"))
7
ответ дан 1 December 2019 в 02:02
поделиться

Я не знаю ни о ком, встроил (в платформе) классы, чтобы сделать это, но я предполагаю, что это не было бы слишком много проблемы к самокрутке..

, Очевидно, это зависит от типа данных, которые Вы хотите записать в него, и требуемая "безопасность"..

Эта статья о DevFusion может быть хорошим местом для запуска?

0
ответ дан 1 December 2019 в 02:02
поделиться

У меня тоже было такое же требование раньше, и я создал небольшой класс для его решения:

public sealed class TemporaryFile : IDisposable {
  public TemporaryFile() : 
    this(Path.GetTempPath()) { }

  public TemporaryFile(string directory) {
    Create(Path.Combine(directory, Path.GetRandomFileName()));
  }

  ~TemporaryFile() {
    Delete();
  }

  public void Dispose() {
    Delete();
    GC.SuppressFinalize(this);
  }

  public string FilePath { get; private set; }

  private void Create(string path) {
    FilePath = path;
    using (File.Create(FilePath)) { };
  }

  private void Delete() {
    if (FilePath == null) return;
    File.Delete(FilePath);
    FilePath = null;
  }
}

Он создает временный файл в указанной вами папке или во временной папке системы. папка. Это одноразовый класс, поэтому в конце своего жизненного цикла (либо Dispose , либо деструктор) он удаляет файл. Вы получаете имя созданного файла (и путь) через свойство FilePath . Вы, конечно, можете расширить его, чтобы также открыть файл для записи и вернуть связанный с ним FileStream .

Пример использования:

using (var tempFile = new TemporaryFile()) {
    // use the file through tempFile.FilePath...
}
24
ответ дан 1 December 2019 в 02:02
поделиться
Другие вопросы по тегам:

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