Какого пользователя сценарии Python выполняют как в окнах? [дубликат]

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

, Учитывая следующую модель и наблюдателя:

class Person < ActiveRecord::Base
  def set_status( new_status )
    # do whatever
  end
end

class PersonObserver < ActiveRecord::Observer
  def after_save(person)
    person.set_status("aha!")
  end
end

я записал бы спецификацию как это (я выполнил ее, и она передает)

describe PersonObserver do
  before :each do
    @person = stub_model(Person)
    @observer = PersonObserver.instance
  end

  it "should invoke after_save on the observed object" do
    @person.should_receive(:set_status).with("aha!")
    @observer.after_save(@person)
  end
end
32
задан DevelopingChris 31 July 2009 в 17:02
поделиться

5 ответов

У нас были проблемы с удалением файлов и каталогов в Windows, даже если мы только что скопировали их, если для них установлено значение «только чтение». shutil.rmtree () предлагает вам своего рода обработчики исключений для обработки этой ситуации. Вы вызываете его и предоставляете обработчик исключений следующим образом:

import errno, os, stat, shutil

def handleRemoveReadonly(func, path, exc):
  excvalue = exc[1]
  if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
      os.chmod(path, stat.S_IRWXU| stat.S_IRWXG| stat.S_IRWXO) # 0777
      func(path)
  else:
      raise

shutil.rmtree(filename, ignore_errors=False, onerror=handleRemoveReadonly)

Вы можете попробовать это.

63
ответ дан 27 November 2019 в 20:28
поделиться

Я никогда не использовал Python, но предполагаю, что он работает как любой пользователь, выполняющий сценарий.

3
ответ дан 27 November 2019 в 20:28
поделиться

Как вы запускаете сценарий? Из сеанса интерактивной консоли? Если это так, просто откройте командное окно DOS (используя cmd) и введите «whoami». Это тот, кто запускает сценарии в интерактивном режиме.

Хорошо, я только что видел ваши правки ... почему бы вам не распечатать путь и не проверить свойства, чтобы увидеть, имеет ли учетная запись пользователя, запускающая сценарии, необходимые привилегии?

Если whoami не работает в вашей версии Windows, вы можете использовать переменные среды, такие как SET USERNAME и SET DOMAINNAME из вашего командного окна.

0
ответ дан 27 November 2019 в 20:28
поделиться

Если сценарий запускается как запланированная задача (что кажется вероятным для сценария очистки), он, вероятно, будет работать как SYSTEM. (Неразумно, но) можно установить разрешения для каталогов так, чтобы у SYSTEM не было доступа.

-1
ответ дан 27 November 2019 в 20:28
поделиться

У скриптов нет специального пользователя, они просто запускаются под текущим авторизованным пользователем, который выполнил скрипт.

Вы пытались проверить, что:

  • вы пытаетесь удалить действительный путь? и что
  • в пути нет заблокированных файлов?
2
ответ дан 27 November 2019 в 20:28
поделиться
Другие вопросы по тегам:

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