LINUX.ORG.RU

Ответ на: комментарий от anonymous

я в курсе, но может ему еще что-то надо с файлом делать. пусть сам разбирается.

silw ★★★★★
()
Ответ на: комментарий от Kindly_Cat

Объединение строк через строку, к которой применяется. В данном случае при склейке строк между ними будет проставлена пустая строка ".

winlook38 ★★
()
Ответ на: комментарий от winlook38

Всё, поправил, отлично работает. То, что нужно.

Kindly_Cat
() автор топика
Ответ на: комментарий от Lorchanin

Лол, там надо было после метода () ставить. Он оказывается ещё более наркоманский чем я думал перед предыдущим постом.

Lorchanin
()
Ответ на: комментарий от Lorchanin

Лол, там надо было после метода () ставить. Он оказывается ещё более наркоманский чем я думал

Ты смешон.

Virtuos86 ★★★★★
()
Ответ на: комментарий от winlook38
with open('/tmp/x') as f: print(''.join(sorted(f)))

readlines не нужен, файловые объекты уже сто лет как итераторы. В Python 3 print функция, потому скобки, а операторам скобки не помеха, так что это обратно-совместимый пример.

Virtuos86 ★★★★★
()
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Но зачем? Разве это будет предсказуемым поведением?

Deleted
()
Ответ на: комментарий от Kindly_Cat

Теперь то же самое, только средствами Питона.

subprocess.call('sort file > new_file', shell=True)
Siado ★★★★★
()
Ответ на: комментарий от anonymous

если речь про Питон головного мозга, то да, наверное.

Deleted
()
Ответ на: комментарий от Lorchanin

Да. Есть такие.
А есть те, кто удивляется, что в ЯП с си-подобным синтаксисом операция вызова функции _внезапно_ оформляется парой скобок. Вот уж невидаль, так невидаль, да. Это, конечно, проблема языка, что на нем пытаются писать, даже не зная его синтаксиса.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Deleted

В некоторых случаях отсутствие необходимости ставить скобки при вызове методов улучшает читаемость кода, а также вкупе с другими фичами языка позволяет строить удобные и понятные DSL. Взять хоть тот же RSpec:

describe "Authentication" do
  subject { page }

  describe "signin page" do
    before { visit signin_path }

    it { should have_title 'Sign in' }
    it { should have_header 'Sign in' }

    context "with invalid information" do
      before { click_button 'Sign in' }

      it { should have_title 'Sign in' }
      it { should_not have_link 'Profile' }
      it { should_not have_link 'Settings' }
      it { should_not have_link 'Users' }
      it { should_not have_link 'Sign out', href: signout_path }
      it { should have_link 'Sign in', href: signin_path }

      it { should have_error_message 'Invalid' }

      context "after visiting another page" do
        before { click_link "Home" }
        it { should_not have_error_message }
      end
    end
  end
end

Кроме того, никто не запрещает ставить скобки, если уж если ты без них жить не можешь.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 2)
Ответ на: комментарий от Lorchanin

утиная типизация во все поля

4.2

Если что-то задает глупые вопросы, не читает документацию, крякает по-русски - это русский школьник.

anonymous
()
Ответ на: утиная типизация во все поля от anonymous

Зачем обижать русских школьников...

По сабжу, для больших файлов предпочтительнее

for i in sorted(open('myfile')): print i
меньше памяти уйдет (если память критична).

AIv ★★★★★
()
Ответ на: комментарий от theNamelessOne

В некоторых языках за счет интроспекции это всего не нужно вообще, делаем скажем класс на питоне, наследующий некоторый библиотечный класс - получаем DSL.

AIv ★★★★★
()
Ответ на: комментарий от AIv

делаем скажем класс на питоне, наследующий некоторый библиотечный класс - получаем DSL.

Можно пример того, как это может выглядеть? У меня есть некоторые соображения, просто хочется удостовериться, что мы друг друга правильно понимаем.

В некоторых языках за счет интроспекции это всего не нужно вообще

Ну, в Ruby вроде бы тоже с интроспекцией все хорошо…

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne
import bindopt, sys
class AAA(bindopt.BASE):
    def foo(self, a, b): #что то делаем
    def bar(self): #еще что то делаем
aaa = AAA(param1=123, param2='qwe') #создаем экз. парсера
aaa(sys.argv[1:]) #разбираем аргументы командной строки

Фактически здесь создан DSL с ориентированным на баш синтаксисом, в неме есть команда foo (принимает два аргумента), bar (без аргументов), ну и можно еще задавать параметры param1 и param2. Поддерживается сокращение имен команд, чтение команд со стандартного ввода с реадлайн, встроенная справка и пр.

bindopt мой модуль, довольно замороченный, но очень удобно в итоге получилось. Любой может наваять что то подобное и юзать в свое удовольствие;-)

AIv ★★★★★
()
Ответ на: комментарий от AIv

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

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

А я того фрагмента вообще не понял, я не рубист.

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.